PHPにおける認証付きAPI
APIを公開ではなく、パスワードによってのみ アクセス可能な非公開にすることができます。 この場合、APIにリクエストする際には、 パラメータに加えて正しいパスワードを 渡す必要があります。 このようなパスワードはトークンと呼ばれます。
当APIのユーザーは、何らかの方法でこの トークンを入手する必要があります。 例えば、購入するなどです。この場合、 購入者それぞれが独自のトークンを持つことになります。
例を用いてトークンの取り扱いを見てみましょう。 当APIがパラメータとして数値を受け取り、 その数値の二乗を返すとします。 このAPIを非公開にしてみましょう。 実装に取り掛かりましょう。
まずは簡単のため、共通のトークンを一つ作成し、 それをファイルに平文で保存しましょう:
<?php
$token = '12345';
?>
パラメータとトークンを渡して、このように 当APIにリクエストを送ります:
http://api.loc/index.php?num=100&token=12345
トークンのチェックを行うAPIを実装しましょう:
<?php
$token = '12345';
if (isset($_GET['token']) and $_GET['token'] === $token) {
if (isset($_GET['num'])) {
echo $_GET['num'] ** 2;
} else {
echo 'error';
}
} else {
echo 'incorrect token';
}
?>
誕生日の日付をパラメータとして受け取り、 その日付までの残り日数を返すAPIを作成してください。 トークンによる認証を実装してください。
前の課題を、パラメータとトークンの両方を POSTメソッドで渡すように変更してください。
前の課題を、トークンがHTTPヘッダー
X-Tokenを介して渡されるように変更してください。
トークンがデータベースに保存され、 APIの各ユーザーが独自のトークンを 持つようにしてください。
APIの各ユーザーに対して、1日あたりの
リクエスト回数を10回に制限してください。