> ## 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.

> JSON Web Token (JWT) の署名、audience、権限、標準クレームを検証して、API で Auth0 アクセストークンを検証します。

# アクセストークンを検証する

API に対して発行された <Tooltip tip="アクセストークン: API へのアクセスに使用される認可資格情報で、不透明な文字列または JWT の形式を取ります。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=access+token">アクセストークン</Tooltip> は、その対象となる API のみが検証する必要があります。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  IDプロバイダー (IdP) のアクセストークンは検証する必要がありません。IdP アクセストークンを発行元の IdP に渡して検証を行ってください。詳しくは、[Identity Provider Access Tokens](/docs/ja-jp/secure/tokens/access-tokens/identity-provider-access-tokens)を参照してください。
</Callout>

これらのチェックのいずれかに失敗した場合、そのトークンは無効と見なされ、リクエストは `401 Unauthorized` を返して拒否しなければなりません。

1. **標準的な JWT 検証を実行します。** アクセストークンは JWT であるため、標準的な JWT の検証手順を実行する必要があります。詳しくは [Validate JSON Web Tokens](/docs/ja-jp/secure/tokens/json-web-tokens/validate-json-web-tokens) を参照してください。
2. **トークンの audience クレームを検証します。** 標準的な JWT 検証を実行していれば、JWT のペイロードはすでにデコードされており、その標準クレームも確認済みのはずです。トークンの audience クレーム (`aud`、文字列の配列) は、最初のトークンリクエストによって決まります。`aud` フィールドには、カスタム API に対応する audience と、`/userinfo` エンドポイントに対応する audience の両方が含まれる場合があります。トークンの audience 値のうち少なくとも 1 つは、[API's Settings](https://manage.auth0.com/#/apis) の **Identifier** フィールドで定義されている対象 API の一意の識別子と一致している必要があります。詳しくは [アクセストークンを取得する](/docs/ja-jp/secure/tokens/access-tokens/get-access-tokens) を参照してください。
3. **権限 (スコープ) を検証します。** アプリケーションに、API へアクセスするために必要な権限が付与されていることを確認します。そのためには、デコードされた JWT のペイロードにある `scope` クレーム (`scope`、スペース区切りの文字列リスト) を確認する必要があります。これは、アクセス対象のエンドポイントに必要な権限と一致している必要があります。たとえば、カスタム API がユーザーレコードの読み取り、作成、削除を行う 3 つのエンドポイントを提供している場合、API を Auth0 に登録した際に、それに対応する 3 つの権限を作成します。

   1. `create:users` は `/create` エンドポイントへのアクセスを提供します
   2. `read:users` は `/read` エンドポイントへのアクセスを提供します
   3. `delete:users` は `/delete` エンドポイントへのアクセスを提供します

   この場合、アプリケーションが `/create` エンドポイントへのアクセスをリクエストしても、アクセストークンの `scope` クレームに `create:users` という値が含まれていなければ、API はそのリクエストを拒否する必要があります。

<div id="learn-more">
  ## 詳しくはこちら
</div>

* [アクセストークンを取得する](/docs/ja-jp/secure/tokens/access-tokens/get-access-tokens)
* [アクセストークンを使用する](/docs/ja-jp/secure/tokens/access-tokens/use-access-tokens)
* [Management API アクセストークン](/docs/ja-jp/secure/tokens/access-tokens/management-api-access-tokens)
* [テスト用の Management API アクセストークンを取得する](/docs/ja-jp/secure/tokens/access-tokens/management-api-access-tokens/get-management-api-access-tokens-for-testing)
* [本番環境用の Management API アクセストークンを取得する](/docs/ja-jp/secure/tokens/access-tokens/management-api-access-tokens/get-management-api-access-tokens-for-production)
* [トークンのベストプラクティス](/docs/ja-jp/secure/tokens/token-best-practices)
