Overview
重要なコンセプト
- Auth0がアクセス、ID、リフレッシュとログアウトのトークンに使うJSON Web Token(JWT)の詳細を理解する
- 署名アルゴリズムを確認し、トークンにとっての署名を理解する
- JWTを検証し、改ざんされていないことを確認する
- JWT.ioでAuth0 SDK、ミドルウェア、または第三者のライブラリーの1つを使ってJWTを検証する
JWTを読める文字列で検証するには、JWT.ioまたはJWT Debugger Chrome Extension(JWTデバッガーのChrome拡張機能)を使用します。
解析と検証
- Webフレームワークに既存のミドルウェアを使用する
- JWT.ioからサードパーティのライブラリーを選択する
- specification RFC 7519 > 7.2 Validating a JWTで説明されているように、チェックを手動で実装する
ミドルウェア
サードパーティのライブラリー
algorithms引数(noneを必ず拒否すること)、シークレットまたはRSA公開鍵(選択した署名アルゴリズムに応じる)で入力するsecretOrPublicKey引数、およびクレームの検証をカスタマイズできるその他の入力引数をサポートします。解析に失敗すると、ライブラリーではJsonWebTokenErrorエラーがjwt malformedメッセージとともに返され、その後、関連する要求を拒否しなければなりません。
サードパーティのライブラリーを使用する上での一般的な推奨事項
- JWTからクレームを取得するには、
verify()メソッドを使用してクレームと署名を検証します。トークンがパブリッククライアントから発行されている場合は特に、decode()メソッドを使用するのを避けます。 - 選択したライブラリーを使用する方法についての全手順に慎重に従います。ライブラリーはデフォルト値またはセキュリティリスクを生じさせる恐れがある設定を使用する可能性があります。
チェックを手動で実装する
RS256で署名されたトークンを検証する
- [Dashboard]>[Applications(アプリケーション)]に移動します。
- **[Settings(設定)]ビューで、[Advanced Settings(高度な設定)]**を開きます。
- **[Certificates(証明書)]ビューに移動し、[Signed Certificate(署名付き証明書)]フィールドを見つけて、[Public Key(公開鍵)]**をコピーします。
- JWT.ioのWebサイトに移動し、**[Algorithm(アルゴリズム)]ドロップダウンから[RS256]**を選択します。
- **[Verify Signature(署名の検証)]**セクションを見つけて、前にコピーした公開鍵を
-----BEGIN PUBLIC KEY-----から始まるフィールドのコンテンツの代わりに貼り付けます。
https://{yourDomain}/.well-known/jwks.json