ホームページ >バックエンド開発 >PHPチュートリアル >PHPでJWTを利用してトークンを作成する例を詳しく解説
#PHP は JWT を使用してトークンの簡単な例を作成します
依存関係環境: php 5.5 以降 OpenSSL 拡張機能lcobucci/JWTcomposer を使用してインストール可能composer require lcobucci/jwt GitHub のダウンロードに直接アクセスすることもできます。
#GitHub アドレス: https://github.com/lcobucci/jwt
#パラメータの説明
iss (発行者)issuer |
|
sub (件名) | |
aud (audence) | |
exp (expire)token | |
nbf (not before) | |
iat (発行済み) at)token | |
jti (JWT ID) | |
##インスタンス前の準備 |
例
[lcobucci/JWT] を使用してトークンを生成するには 2 つの方法があります。ここでは 2 番目の方法のみをテストしました。1 つ目: 秘密鍵の署名を使用してトークンを生成する
use Lcobucci\JWT\Builder; use Lcobucci\JWT\Signer\Hmac\Sha256; $builder = new Builder(); $signer = new Sha256(); // 设置发行人 $builder->setIssuer('http://example.com'); // 设置接收人 $builder->setAudience('http://example.org'); // 设置id $builder->setId('4f1g23a12aa', true); // 设置生成token的时间 $builder->setIssuedAt(time()); // 设置在60秒内该token无法使用 $builder->setNotBefore(time() + 60); // 设置过期时间 $builder->setExpiration(time() + 3600); // 给token设置一个id $builder->set('uid', 1); // 对上面的信息使用sha256算法签名 $builder->sign($signer, '签名key'); // 获取生成的token $token = $builder->getToken();トークンの検証
use Lcobucci\JWT\Signer\Hmac\Sha256; $parse = (new Parser())->parse($token); $signer = new Sha256(); $parse->verify($signer,'签名key');// 验证成功返回true 失败false
2 つ目: RSA および ECDSA 署名を使用する
RSA および ECDSA 署名は公開キーと秘密キーに基づいているため、
use Lcobucci\JWT\Signer\Keychain; // 注意这里使用的sha256 use Lcobucci\JWT\Signer\Rsa\Sha256; $signer = new Sha256(); $keychain = new Keychain(); $builder = new Builder(); $builder->setIssuer('http://example.com'); $builder->setAudience('http://example.org'); $builder->setId('4f1g23a12aa', true); $builder->setIssuedAt(time()); $builder->setNotBefore(time() + 60); $builder->setExpiration(time() + 3600); $builder->set('uid', 1); // 与上面不同的是这里使用的是你的私钥,并提供私钥的地址 $builder->sign($signer, $keychain->getPrivateKey('file://{私钥地址}')); $toekn = $builder->getToken();を使用して生成および検証するには秘密キーを使用する必要があります。強制的に変換することもできます。 必要な純粋な文字列トークンを形式で取得するには、$toekn = (string) $builder->getToken();フロントエンドとの対話が可能です。返された JSON に配置されます。この形式はパラメーターを介して渡され、ヘッダーの Authorization に保存することもできます。 Verification Token
$signer = new \Lcobucci\JWT\Signer\Rsa\Sha256(); $keychain = new \Lcobucci\JWT\Signer\Keychain(); $parse = new \Lcobucci\JWT\Parser(); $parse->parse((string)$token); var_dump($token->verify($signer, $keychain->getPublicKey(self::$dir . '/public.key'))); ))Get dataデータ部分は復号化せずに直接取得できるため。したがって、トークンが合法であることを確認した後、直接読み取ることができ、これが、機密情報をキャリアに保存すべきでない理由でもあります。
$parse = (new Parser())->parse($token); // 获取全部信息,返回一个数组, var_dump($parse->getClaims()); // 获取单条信息 var_dump($parse->getClaim('aud'));推奨チュートリアル: 「
PHP ビデオ チュートリアル
」以上がPHPでJWTを利用してトークンを作成する例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。