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

> Auth0 SDK またはサードパーティライブラリを使用して、署名の検証、ペイロードのデコード、クレームの確認により JSON Web Token（JWT）を検証します。

# JSON Web Token の検証

<Card title="概要">
  主要な概念

  * Auth0 がアクセストークン、ID トークン、リフレッシュトークン、ログアウトトークンに使用する JSON Web Token (JWT) について確認します。
  * トークンの署名とは何かを理解するために、署名アルゴリズムを確認します。
  * JWT が改ざんされていないことを確認するために検証します。
  * JWT を検証するには、Auth0 SDK、ミドルウェア、または [JWT.io](https://jwt.io/?_gl=1*arqbp6*rollup_ga*MTI5MzkwNDYxOC4xNjQ0MjUyMTYx*rollup_ga_F1G3E656YZ*MTY1MDA0NDA3Ni4xMjkuMS4xNjUwMDQ0MDg1LjUx&_ga=2.167965921.1971874740.1649687281-1293904618.1644252161#libraries-io) にあるサードパーティライブラリのいずれかを使用します。
</Card>

Auth0 は、安全なデータ転送、認証、認可のために <Tooltip tip="JSON Web Token（JWT）: 2 者間でクレームを安全に表現するために使用される標準的な ID トークン形式（および多くの場合アクセストークン形式）。" cta="用語集を表示" href="/docs/ja-jp/glossary?term=JSON+Web+Token+%28JWT%29">JSON Web Token (JWT)</Tooltip> を使用します。トークンが侵害されておらず、署名が正当なものであることを確認するために、通常の Web アプリケーション、ネイティブアプリケーション、シングルページアプリケーションでは、トークンを解析して検証する必要があります。たとえば、トークンが改ざんされたり、不正に使用されたり、有効期限が切れていたりする場合のセキュリティリスクを軽減するため、トークンは検証すべきです。<Tooltip tip="JSON Web Token（JWT）: 2 者間でクレームを安全に表現するために使用される標準的な ID トークン形式（および多くの場合アクセストークン形式）。" cta="用語集を表示" href="/docs/ja-jp/glossary?term=JWT">JWT</Tooltip> の検証では、構造、クレーム、署名を確認して、リスクを最小限に抑えます。

﻿

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  JWT を視覚的に確認するには、[JWT.io](https://jwt.io/) にアクセスするか、[JWT Debugger Chrome Extension](https://chrome.google.com/webstore/detail/jwt-debugger/ppmmlchacdbknfphdeafcbmklcghghmd?hl=en)) を使用します。
</Callout>

JWT の署名は、<Tooltip tip="署名アルゴリズム: トークンが改ざんされていないことを保証するために、トークンへデジタル署名する際に使用されるアルゴリズム。" cta="用語集を表示" href="/docs/ja-jp/glossary?term=Signing+Algorithm">署名アルゴリズム</Tooltip> を使って生成されます。トークンでは複数の <Tooltip tip="署名アルゴリズム: トークンが改ざんされていないことを保証するために、トークンへデジタル署名する際に使用されるアルゴリズム。" cta="用語集を表示" href="/docs/ja-jp/glossary?term=signing+algorithms">署名アルゴリズム</Tooltip> を使用できますが、Auth0 は RS256 (SHA-256 ハッシュ関数を使用する RSA) または HS256 (SHA-256 を使用する HMAC メッセージ認証コード (MAC) ) をサポートしています。Auth0 が推奨するアルゴリズムについて詳しくは、[Signing Algorithms](/docs/ja-jp/get-started/applications/signing-algorithms) を参照してください。

JWT を検証する際は、一般に現在のハッシュ値と元のハッシュ値を解析またはデコードして比較し、トークンの署名が正当なものかどうかを確認します。[backend API quickstarts](/docs/ja-jp/quickstart/backend) ではいずれも、JWT の検証と解析を行う SDK を使用しています。

<div id="parse-and-validate">
  ## 解析と検証
</div>

JWT の検証と解析を行う SDK を使用していない場合は、次の方法で JWT を解析・検証できます。

* 使用している Web フレームワーク向けの既存のミドルウェアを利用する。
* JWT.io でサードパーティライブラリを選ぶ。
* [specification RFC 7519 > 7.2 Validating a JWT](https://tools.ietf.org/html/rfc7519#section-7.2) で説明されているチェックを手動で実装する。

JWT の解析と検証には、ミドルウェアまたは既存のオープンソースのサードパーティライブラリを利用することを強くおすすめします。[JWT.io](https://jwt.io/#libraries-io) では、.NET、Python、Java、Ruby、Objective-C、Swift、PHP など、さまざまなプラットフォームや言語向けのライブラリを見つけることができます。

<div id="middleware">
  ## ミドルウェア
</div>

[ASP.NET Core](/docs/ja-jp/quickstart/backend/aspnet-core-webapi) などの多くのウェブフレームワークには、JWT の検証を行う JWT ミドルウェアが用意されています。通常は、ミドルウェアがフレームワーク全体の認証の仕組みとうまく連携するため、これが最も適した方法です。

<div id="third-party-libraries">
  ## サードパーティライブラリ
</div>

サードパーティライブラリを選ぶ場合は、アプリケーションまたは API を Auth0 に登録した際に選択した署名アルゴリズムに対応しているライブラリを選んでください。また、すべてのライブラリがすべての JWT クレームを検証するわけではない点にも注意が必要です。JWT.io では、各ライブラリがどの検証に対応しているかを確認できます (緑のチェックマークを参照してください) 。

ほとんどのサードパーティライブラリでは、JWT を検証するためのメソッドが 1 つ用意されており、さまざまな引数を使って検証内容をカスタマイズできます。たとえば、Node.js で [node-jsonwebtoken library](https://github.com/auth0/node-jsonwebtoken) を使用している場合は、[jwt.verify()](https://github.com/auth0/node-jsonwebtoken#jwtverifytoken-secretorpublickey-options-callback) メソッドを呼び出します。このメソッドでは、許可するアルゴリズムを指定する `algorithms` 引数 (`none` は必ず無効にしてください) 、シークレットまたは RSA 公開鍵のいずれかを設定する `secretOrPublicKey` 引数 (選択した署名アルゴリズムに応じて設定) 、さらにクレーム検証をカスタマイズするためのその他の引数をサポートしています。解析に失敗した場合、ライブラリは `jwt malformed` というメッセージを含む [JsonWebTokenError error](https://github.com/auth0/node-jsonwebtoken#jsonwebtokenerror) を返します。その場合、関連するリクエストは**必ず**拒否しなければなりません。

サードパーティライブラリを使用する際の一般的な推奨事項:

* JWT からクレームを取得する場合は、`verify()` メソッドを使ってクレームと署名を検証してください。トークンの検証に `decode()` メソッドを使うのは避けてください。特に、そのトークンが <Tooltip tip="パブリッククライアント: 資格情報を安全に保持できないクライアント（アプリケーション）。たとえば、ネイティブのデスクトップアプリケーションやモバイルアプリケーション、JavaScript ベースのクライアントサイド Web アプリケーション（シングルページアプリケーション（SPA）など）が含まれます。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=public+client">パブリッククライアント</Tooltip> から送られてくる場合は、なおさらです。
* 選択したライブラリの使用方法に関する指示には、必ず注意深く従ってください。ライブラリが既定値や設定に依存していると、セキュリティリスクが生じる可能性があります。

<div id="manually-implement-checks">
  ## チェックを手動で実装する
</div>

JWT の検証を手動で行うことは推奨していません。実装を誤ったり、重要な詳細を見落としたりして、深刻なセキュリティ脆弱性につながるおそれがあるためです。JWT の検証は、ほとんどの JWT ライブラリが自動的に処理してくれます。お使いのプラットフォームやプログラミング言語に対応した JWT ライブラリを探すには、JWT.io をご覧ください。

JWT を手動で検証する方法については、[RFC 7519](https://tools.ietf.org/html/rfc7519#section-7.2)を参照してください。Auth0 が発行する JWT はすべて JSON Web Signature (JWS) を使用しており、暗号化ではなく署名されています。

<div id="verify-rs256-signed-tokens">
  ## RS256 署名付きトークンを検証する
</div>

RS256 署名付きトークンを目視で検証するには、次の手順に従います。

1. [Dashboard > アプリケーション](https://manage.auth0.com/#/applications) に移動します。
2. **Settings** ビューに移動し、**Advanced Settings** を開きます。
3. **Certificates** ビューに移動し、**Signed Certificate** フィールドを見つけて、**Public Key** をコピーします。
4. [JWT.io](https://jwt.io/) の Web サイトに移動し、**Algorithm** ドロップダウンから **RS256** を選択します。
5. **Verify Signature** セクションを見つけ、`-----BEGIN PUBLIC KEY-----` で始まるフィールドの内容を、先ほどコピーした Public Key に置き換えます。

いずれかのアプリケーションから取得したトークンの署名を検証するには、次の方法をおすすめします。

テナントの JWKS は次の場所から取得することをおすすめします。
`https://{yourDomain}/.well-known/jwks.json`

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

* [JSON Web Token のクレーム](/docs/ja-jp/secure/tokens/json-web-tokens/json-web-token-claims)
* [ID トークンの検証](/docs/ja-jp/secure/tokens/id-tokens/validate-id-tokens)
* [アクセストークンの検証](/docs/ja-jp/secure/tokens/access-tokens/validate-access-tokens)
* [トークンのベストプラクティス](/docs/ja-jp/secure/tokens/token-best-practices)
