このページは、PHP で単純な JWT 認証を行う例を記載するページです。
注意
- コードのライセンスは CC0 (クレジット表示不要、改変可、商用可) です。
- フレームワークを使わない場合に使う用途として想定しています。
- このページでは JWT のライブラリとして firebase/php-jwt (6.1.1) を使用しています。
サンプルの想定動作
サンプルの想定動作は下記のようなイメージです。
- login.php に下記のリクエストをすると認証が通り JWT トークン (
{ "token": "..." }
) が返却される
- ヘッダー:
Content-Type: application/json
- ボディ:
{ "username": "test", "password": "test" }
- data.php に下記のリクエストをするとデータ (
{ "username": "test }
) が返却される
- ヘッダー:
Content-Type: application/json
- ヘッダー:
Authorization: Bearer 【index.php で取得したトークン】
- ボディ: なし
コード
.htaccess
RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
PHP
リクエスト例
※ Visual Studio Code の REST Client 拡張で使用できる形式になっています。data.php の Bearer は login のレスポンスにある token を使用します。
# @name login
POST http://localhost/login.php
Content-Type: application/json
{
"username": "test",
"password": "test"
}
###
GET http://localhost/data.php
Content-Type: application/json
Authorization: Bearer {{login.response.body.$.token}}
実行例