Microsoft ID プラットフォームの ID トークン
ID トークンは承認サーバーによって発行され、ユーザーについての情報を伝えるクレームを含んでいます。 これらは、アクセス トークンの代わりに、またはアクセス トークンと共に送信できます。 ID トークンに含まれる情報により、ユーザーが主張するとおりの人物であることをクライアントで確認できます。
サードパーティのアプリケーションは ID トークンを理解するように設計されます。 ID トークンを承認目的で使用すべきではありません。 承認には、アクセス トークンを使用します。 ID トークンによって提供されるクレームは、アプリケーション内の UX でデータベースのキーとして使用でき、クライアント アプリケーションへのアクセスが提供されます。 ID トークンで使用されるクレームの詳細については、「ID トークン クレーム リファレンス」を参照してください。 クレームベースの認可の詳細については、「クレームを検証してアプリケーションと API をセキュリティで保護する」を参照してください。
トークンの形式
Microsoft ID プラットフォームで使用できる ID トークンには、v1.0 と v2.0 の 2 つのバージョンがあります。 トークンに含まれるクレームは、これらのバージョンによって決まります。 v1.0 と v2.0 の ID トークンは、含まれる情報に違いがあります。 バージョンは、要求元のエンドポイントに基づきます。 新しいアプリケーションでは、v2.0 を使用してください。
- v1.0:
https://login.microsoftonline.com/common/oauth2/authorize
- v2.0:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
v1.0 ID トークンのサンプル
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IjdfWnVmMXR2a3dMeFlhSFMzcTZsVWpVWUlHdyIsImtpZCI6IjdfWnVmMXR2a3dMeFlhSFMzcTZsVWpVWUlHdyJ9.eyJhdWQiOiJiMTRhNzUwNS05NmU5LTQ5MjctOTFlOC0wNjAxZDBmYzljYWEiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkvIiwiaWF0IjoxNTM2Mjc1MTI0LCJuYmYiOjE1MzYyNzUxMjQsImV4cCI6MTUzNjI3OTAyNCwiYWlvIjoiQVhRQWkvOElBQUFBcXhzdUIrUjREMnJGUXFPRVRPNFlkWGJMRDlrWjh4ZlhhZGVBTTBRMk5rTlQ1aXpmZzN1d2JXU1hodVNTajZVVDVoeTJENldxQXBCNWpLQTZaZ1o5ay9TVTI3dVY5Y2V0WGZMT3RwTnR0Z2s1RGNCdGsrTExzdHovSmcrZ1lSbXY5YlVVNFhscGhUYzZDODZKbWoxRkN3PT0iLCJhbXIiOlsicnNhIl0sImVtYWlsIjoiYWJlbGlAbWljcm9zb2Z0LmNvbSIsImZhbWlseV9uYW1lIjoiTGluY29sbiIsImdpdmVuX25hbWUiOiJBYmUiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC83MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMWRiNDcvIiwiaXBhZGRyIjoiMTMxLjEwNy4yMjIuMjIiLCJuYW1lIjoiYWJlbGkiLCJub25jZSI6IjEyMzUyMyIsIm9pZCI6IjA1ODMzYjZiLWFhMWQtNDJkNC05ZWMwLTFiMmJiOTE5NDQzOCIsInJoIjoiSSIsInN1YiI6IjVfSjlyU3NzOC1qdnRfSWN1NnVlUk5MOHhYYjhMRjRGc2dfS29vQzJSSlEiLCJ0aWQiOiJmYTE1ZDY5Mi1lOWM3LTQ0NjAtYTc0My0yOWYyOTU2ZmQ0MjkiLCJ1bmlxdWVfbmFtZSI6IkFiZUxpQG1pY3Jvc29mdC5jb20iLCJ1dGkiOiJMeGVfNDZHcVRrT3BHU2ZUbG40RUFBIiwidmVyIjoiMS4wIn0=.UJQrCA6qn2bXq57qzGX_-D3HcPHqBMOKDPx4su1yKRLNErVD8xkxJLNLVRdASHqEcpyDctbdHccu6DPpkq5f0ibcaQFhejQNcABidJCTz0Bb2AbdUCTqAzdt9pdgQvMBnVH1xk3SCM6d4BbT4BkLLj10ZLasX7vRknaSjE_C5DI7Fg4WrZPwOhII1dB0HEZ_qpNaYXEiy-o94UJ94zCr07GgrqMsfYQqFR7kn-mn68AjvLcgwSfZvyR_yIK75S_K37vC3QryQ7cNoafDe9upql_6pB2ybMVlgWPs_DmbJ8g0om-sPlwyn74Cc1tW3ze-Xptw_2uVdPgWyqfuWAfq6Q
この v1.0 のサンプル トークンは jwt.ms で表示できます。
v2.0 ID トークンのサンプル
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjFMVE16YWtpaGlSbGFfOHoyQkVKVlhlV01xbyJ9.eyJ2ZXIiOiIyLjAiLCJpc3MiOiJodHRwczovL2xvZ2luLm1pY3Jvc29mdG9ubGluZS5jb20vOTEyMjA0MGQtNmM2Ny00YzViLWIxMTItMzZhMzA0YjY2ZGFkL3YyLjAiLCJzdWIiOiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFJa3pxRlZyU2FTYUZIeTc4MmJidGFRIiwiYXVkIjoiNmNiMDQwMTgtYTNmNS00NmE3LWI5OTUtOTQwYzc4ZjVhZWYzIiwiZXhwIjoxNTM2MzYxNDExLCJpYXQiOjE1MzYyNzQ3MTEsIm5iZiI6MTUzNjI3NDcxMSwibmFtZSI6IkFiZSBMaW5jb2xuIiwicHJlZmVycmVkX3VzZXJuYW1lIjoiQWJlTGlAbWljcm9zb2Z0LmNvbSIsIm9pZCI6IjAwMDAwMDAwLTAwMDAtMDAwMC02NmYzLTMzMzJlY2E3ZWE4MSIsInRpZCI6IjkxMjIwNDBkLTZjNjctNGM1Yi1iMTEyLTM2YTMwNGI2NmRhZCIsIm5vbmNlIjoiMTIzNTIzIiwiYWlvIjoiRGYyVVZYTDFpeCFsTUNXTVNPSkJjRmF0emNHZnZGR2hqS3Y4cTVnMHg3MzJkUjVNQjVCaXN2R1FPN1lXQnlqZDhpUURMcSFlR2JJRGFreXA1bW5PcmNkcUhlWVNubHRlcFFtUnA2QUlaOGpZIn0.1AFWW-Ck5nROwSlltm7GzZvDwUkqvhSQpm55TQsmVo9Y59cLhRXpvB8n-55HCr9Z6G_31_UbeUkoz612I2j_Sm9FFShSDDjoaLQr54CreGIJvjtmS3EkK9a7SJBbcpL1MpUtlfygow39tFjY7EVNW9plWUvRrTgVk7lYLprvfzw-CIqw3gHC-T7IK_m_xkr08INERBtaecwhTeN4chPC4W3jdmw_lIxzC48YoQ0dB1L9-ImX98Egypfrlbm0IBL5spFzL6JDZIRRJOu8vecJvj1mq-IUhGt0MacxX8jdxYLP-KUu2d9MbNKpCKJuZ7p8gwTL5B7NlUdh_dmSviPWrw
この v2.0 のサンプル トークンは jwt.ms で表示できます。
トークンの有効期間
既定では、ID トークンの有効期間は 1 時間です。1 時間後、クライアントは新しい ID トークンを取得する必要があります。
ID トークンの有効期間を調整すると、クライアント アプリケーションがアプリケーション セッションを期限切れにする頻度と、ユーザーに再認証を自動的にまたは対話形式で要求する頻度を制御できます。 詳細については、構成可能なトークンの有効期間に関する記事を参照してください。
トークンを検証する
ID トークンを検証するために、クライアントは、トークンが改ざんされていないかどうかを確認することができます。 また、発行者を検証して、正しい発行者がトークンを送り返したことを確認することもできます。 ID トークンは常に JWT トークンであるため、トークンを検証する多くのライブラリが存在しています。自ら検証するのではなく、これらのライブラリのいずれかを使用することをお勧めします。 ID トークンの検証は必ず Confidential クライアントで行う必要があります。 詳しくは、「要求を検証してアプリケーションと API をセキュリティで保護する」をご覧ください。
パブリック アプリケーション (ユーザーのブラウザーやホーム ネットワークなど、制御できないデバイスまたはネットワークで完全に実行されるコード) は、ID トークンの検証から利点が得られません。 このケースでは、悪意のあるユーザーによって、トークンの検証に使用するキーがインターセプトされて編集されるおそれがあります。
以下の JWT クレームは、トークン上の署名を検証した後、ID トークンで検証する必要があります。 トークン検証ライブラリで、次のクレームを検証することもできます。
- タイムスタンプ:
iat
、nbf
、exp
の各タイムスタンプがすべて、現在の時刻の前か後であることが必要です (該当する場合)。 - 対象:
aud
要求がアプリケーションのアプリ ID と一致する必要があります。 - nonce: ペイロードの
nonce
要求が、最初の要求で/authorize
エンドポイントに渡された nonce パラメーターと一致する必要があります。
関連項目
次のステップ
- OpenID Connect フローを確認します。これは、ID トークンを生成するプロトコルを定義します。