概要
主要な概念
- アクセス、ID、リフレッシュ、ログアウトの各トークンで Auth0 が使用する JSON Web Token (JWT) について確認します。
- トークンの署名とは何かを理解するために、署名アルゴリズムを確認します。
- JWT を検証して、改ざんされていないことを確認します。
- JWT を検証するには、Auth0 SDK、ミドルウェア、または JWT.io のサードパーティライブラリを使用します。
JWT を目視で確認するには、JWT.io にアクセスするか、JWT Debugger Chrome Extension) を使用します。
解析と検証
- 使用している Web フレームワーク向けの既存のミドルウェアを使用する。
- JWT.io でサードパーティライブラリを選択する。
- specification RFC 7519 > 7.2 Validating a JWT で説明されているチェックを手動で実装する。
ミドルウェア
サードパーティライブラリ
algorithms 引数 (none は許可しないでください) 、シークレットまたは RSA 公開鍵のいずれかを設定する secretOrPublicKey 引数 (選択した署名アルゴリズムによって異なります) 、およびクレーム検証をカスタマイズするためのその他の入力引数をサポートしています。解析に失敗した場合、ライブラリは jwt malformed というメッセージを含む JsonWebTokenError error を返します。その場合は、関連するリクエストを必ず拒否する必要があります。
サードパーティライブラリを使用する際の一般的な推奨事項:
- JWT からクレームを取得する場合は、
verify()メソッドを使用してクレームと署名を検証してください。トークンの検証にdecode()メソッドを使用することは避けてください。特に、そのトークンが から送られてきたものである場合は、なおさらです。 - 選択したライブラリの使用方法に関するすべての指示に注意深く従ってください。ライブラリが既定値や設定に依存している場合、それがセキュリティリスクにつながる可能性があります。
チェックを手動で実装する
RS256 署名付きトークンを検証する
- Dashboard > Applications に移動します。
- Settings ビューに移動し、Advanced Settings を開きます。
- Certificates ビューに移動し、Signed Certificate フィールドを見つけて、Public Key をコピーします。
- JWT.io の Web サイトにアクセスし、Algorithm ドロップダウンで RS256 を選択します。
- Verify Signature セクションを見つけ、
-----BEGIN PUBLIC KEY-----で始まるフィールドの内容を、先ほどコピーした Public Key に置き換えます。
https://{yourDomain}/.well-known/jwks.json