PHP:Auth0-PHPを使用したJWT(JSON Web Token)の検証

Auth0 PHP SDKは、JSON Web Token(JWT)の処理に使用されるAuth0\SDK\Tokenクラスを提供しています。これにより、アプリケーションで使用するためにトークンのデコード、検証、および妥当性の確認が行えます。JWTについての詳細と、それらの構築およびデコードの方法は、「jwt.io」でご覧いただけます。

このクラスは、HS256とRS256の両方を処理することができます。どちらのタイプも、処理を行う前にSDKでアルゴリズムと有効なオーディエンスを構成する必要があります。HS256トークンは、クライアントシークレットを構成する必要があります。RS256トークンは、認可済み発行者が必要で、デコードする過程でJWKファイルの取得に使用されます(署名アルゴリズムの詳細はこちら)。

前提条件

以下のドキュメントは、「PHP:入門ガイド」の手順を終えていることを前提としており、そこで提供されたコードを使用します。

使用例

以下は、SDKのTokenクラスに基づいた、小さなURLベースのJSON Web Tokenプロセッサーの例です。

<?php

// Import the Composer Autoloader to make the SDK classes accessible:
require 'vendor/autoload.php';

// Load our environment variables from the .env file:
(Dotenv\Dotenv::createImmutable(__DIR__))->load();

$token = filter_var($_GET['token'] ?? null, FILTER_UNSAFE_RAW, FILTER_NULL_ON_FAILURE);
$algorithm = filter_var($_GET['algorithm'] ?? 'HS256', FILTER_UNSAFE_RAW, FILTER_NULL_ON_FAILURE);

if ($token === null) {
    die('No `token` request parameter.');
}

if (! in_array($algorithm, ['HS256', 'RS256'])) {
    die('Invalid `algorithm` supplied.');
}

// The Auth0 SDK includes a helpful token processing utility we'll leverage for this:
$token = new \Auth0\SDK\Token([
    'domain' => $env['AUTH0_DOMAIN'],
    'clientId' => $env['AUTH0_CLIENT_ID'],
    'clientSecret' => $env['AUTH0_CLIENT_SECRET'],
    'tokenAlgorithm' => $algorithm
], $token, \Auth0\SDK\Token::TYPE_ID_TOKEN);

// Verify the token: (This will throw an \Auth0\SDK\Exception\InvalidTokenException if verification fails.)
$token->verify();

// Validate the token claims: (This will throw an \Auth0\SDK\Exception\InvalidTokenException if validation fails.)
$token->validate();

echo '<pre>';
print_r($token->toArray(), true);
echo '</pre>';

Was this helpful?

/

verify()validate()の両方が、動作をカスタマイズするために使用できる多数のオプション引数を提供します。これには、nonceクレームの検証、トークンのauth_timeからの最大経過時間の制限、時間チェックのためのleewayクロック許容誤差などが含まれます。これらのメソッドには、これらのオプションを確認するために、ソースコードまたはお好みのIDEを通じて完全にコメントが付けられています。

もっと詳しく