> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# JWT（JSON Web トークン）をバリデーションする

> Auth0-PHP SDK の Token クラスを使用して、PHP アプリケーション内で HS256 および RS256 JSON Web トークンを解析、検証、バリデーションします。

export const ReleaseStageNotice = ({feature, stage, plans, contact, terms}) => {
  const stageTextMap = {
    "beta": "Beta",
    "ea": "早期アクセス"
  };
  const stageText = stageTextMap[stage] || "製品リリース段階";
  const prsLink = "/docs/troubleshoot/product-lifecycle/product-release-stages";
  const linkify = (text, url) => {
    return <a href={url} target="_blank" rel="noreferrer" class="link">{text}</a>;
  };
  const includeDetails = (plans, contact, terms) => {
    const hasDetails = terms || plans || contact;
    if (!hasDetails) return null;
    return <span data-as="p">
            {plans && <>この機能は{linkify(`${plans}プラン`, "https://auth0.com/pricing")}でご利用いただけます。 </>}
            {contact && "参加をご希望の場合は、" + contact + "までお問い合わせください。 "}
            {terms && <>この機能を使用することにより、Oktaの該当する無料トライアル規約および{linkify("Master Subscription Agreement", "https://www.okta.com/legal")}に同意したものとみなされます。</>}
        </span>;
  };
  return <Warning>
            <span data-as="p">
                <strong>{feature}機能は現在、{linkify(stageText, prsLink)}です。</strong>
            </span>

            {includeDetails(plans, contact, terms)}
        </Warning>;
};

<ReleaseStageNotice feature="Auth0 PHP SDK v9" stage="beta" />

Auth0 PHP SDK は、<Tooltip tip="JSON Web トークン (JWT): 2 者間でクレームを安全に表現するために使用される標準の ID トークン形式（および多くの場合 access token の形式）。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=JSON+Web+Tokens">JSON Web トークン</Tooltip> (JWT) を処理するための `Auth0\SDK\Token` クラスを提供しています。これにより、アプリケーションで使用するトークンのデコード、バリデーション、検証を行えます。JWT の詳細や、その構築方法とデコード方法については、[jwt.io](https://jwt.io/) を参照してください。

このクラスは、HS256 トークンと RS256 トークンの両方を処理できます。どちらの種類でも、処理前にアルゴリズムと有効な audience を SDK に設定しておく必要があります。HS256 トークンでは、<Tooltip tip="Client Secret: クライアント（アプリケーション）が認可サーバーで認証するために使用するシークレット。クライアントと認可サーバーのみが知っているべきであり、推測されないよう十分にランダムである必要があります。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=client+secret">client secret</Tooltip> を設定する必要があります。RS256 トークンでは、デコード処理中に JWKs ファイルを取得するために使用する、認可された発行者が必要です。 ([署名アルゴリズムの詳細はこちら](https://auth0.com/blog/navigating-rs256-and-jwks/)) 。

<div id="prerequisites">
  ## 前提条件
</div>

以下のドキュメントは、[PHP Getting started ガイド](/docs/ja-jp/libraries/auth0-php) の手順を完了し、そこで提供されているコードをもとに進めることを前提としています。

<div id="example-usage">
  ## 使用例
</div>

以下は、SDK の `Token` クラスをベースにした、URL ベースの小規模な JSON Web トークンプロセッサの例です。

```php lines expandable theme={null}
<?php

// Composer AutoloaderをインポートしてSDKクラスにアクセスできるようにします:
require 'vendor/autoload.php';

// .envファイルから環境変数を読み込みます:
(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.');
}

// Auth0 SDKには、ここで使用できる便利なトークン処理ユーティリティが含まれています:
$configuration = new \Auth0\SDK\Configuration\SdkConfiguration([
    'strategy'       => \Auth0\SDK\Configuration\SdkConfiguration::STRATEGY_NONE,
    'domain'         => $_ENV['AUTH0_DOMAIN'],
    'clientId'       => $_ENV['AUTH0_CLIENT_ID'],
    'clientSecret'   => $_ENV['AUTH0_CLIENT_SECRET'],
    'tokenAlgorithm' => $algorithm,
]);

$token = new \Auth0\SDK\Token($configuration, $token, \Auth0\SDK\Token::TYPE_ID_TOKEN);

// トークンを検証します: (検証に失敗した場合、\Auth0\SDK\Exception\InvalidTokenException がスローされます。)
$token->verify();

// トークンのクレームをバリデーションします: (バリデーションに失敗した場合、\Auth0\SDK\Exception\InvalidTokenException がスローされます。)
$token->validate();

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

`verify()` と `validate()` はどちらも、動作をカスタマイズするためのさまざまなオプション引数を備えています。たとえば、<Tooltip tip="Nonce: リプレイ攻撃を検出して防ぐために、認証プロトコルで一度だけ発行される任意の数。" cta="用語集を表示" href="/docs/ja-jp/glossary?term=nonce">nonce</Tooltip> クレームの検証、トークンの `auth_time` からの最大経過時間の制限、時間チェックにおける `leeway` のクロック許容差の設定などがあります。これらのメソッドには詳しいコメントが付いているため、ソースコードまたはお使いの IDE から各オプションを確認できます。

<div id="learn-more">
  ## 詳細情報
</div>

* [Login、Logout、ユーザープロファイルを管理する](/docs/ja-jp/libraries/auth0-php/auth0-php-basic-use)
* [Authentication API を使用する](/docs/ja-jp/libraries/auth0-php/using-the-authentication-api-with-auth0-php)
* [Management API を使用する](/docs/ja-jp/libraries/auth0-php/using-the-management-api-with-auth0-php)
* [Auth0-PHP 連携のトラブルシューティング](/docs/ja-jp/libraries/auth0-php/troubleshoot-auth0-php-library)
