ID トークンの使用 - Amazon Cognito

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ID トークンの使用

ID トークンとは、nameemail、および phone_number など、認証されたユーザーのアイデンティティに関するクレームが含まれる、 JSON ウェブトークン (JWT) です。この ID 情報はアプリケーション内で使用できます。ID トークンは、リソースサーバーまたはサーバーアプリケーションに対するユーザーの認証にも使用できます。Web API オペレーションを使用して、アプリケーション外で ID トークンを使用することも可能です。このような場合は、ID トークン内のクレームを信頼する前に、ID トークンの署名を検証する必要があります。JSON Web トークンの検証 を参照してください。

ID トークンの有効期限は、5 分から 1 日までの任意の値に設定できます。この値は、アプリケーションのクライアントごとに設定できます。

重要

ユーザーがホストされた UI またはフェデレーション ID プロバイダー (IdP) でサインインすると、Amazon Cognito は 1 時間有効なセッション Cookie を設定します。ホストされた UI またはフェデレーションを使用し、アクセストークンと ID トークンに 1 時間未満の最小期間を指定すると、Cookie の有効期限が切れるまで、ユーザーは有効なセッションを継続できます。1 時間のセッション中に有効期限が切れるトークンがある場合、ユーザーは再認証しなくてもトークンを更新できます。

ID トークンのヘッダー

ヘッダーには 2 つの情報 (キー ID: kid、アルゴリズム: alg) が含まれています。

{ "kid" : "1234example=", "alg" : "RS256" }
kid

キー ID。その値は、トークンの JSON Web 署名 (JWS) をセキュア化するために使用されたキーを示します。ユーザープール署名キー ID は jwks_uri エンドポイントで確認できます。

kid パラメータの詳細については、「Key identifier (kid) header parameter」を参照してください。

alg

Amazon Cognito が、アクセストークンをセキュア化するために使用した暗号化アルゴリズム。ユーザープールは、SHA-256 による RSA 署名である RS256 暗号化アルゴリズムを使用します。

alg パラメータの詳細については、「Algorithm (alg) header parameter」を参照してください。

ID トークンのペイロード

これは ID トークンのサンプルペイロードで、認証されたユーザーに関するクレームが含まれています。OpenID Connect (OIDC) 標準クレームに関する詳細については、「OIDC standard claims」を参照してください。

<header>.{ "sub": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "cognito:groups": [ "test-group-a", "test-group-b", "test-group-c" ], "email_verified": true, "cognito:preferred_role": "arn:aws:iam::111122223333:role/my-test-role", "iss": "https://cognito-idp.us-west-2.amazonaws.com/us-west-2_example", "cognito:username": "my-test-user", "middle_name": "Jane", "nonce": "abcdefg", "origin_jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "cognito:roles": [ "arn:aws:iam::111122223333:role/my-test-role" ], "aud": "xxxxxxxxxxxxexample", "identities": [ { "userId": "amzn1.account.EXAMPLE", "providerName": "LoginWithAmazon", "providerType": "LoginWithAmazon", "issuer": null, "primary": "true", "dateCreated": "1642699117273" } ], "event_id": "64f513be-32db-42b0-b78e-b02127b4f463", "token_use": "id", "auth_time": 1676312777, "exp": 1676316377, "iat": 1676312777, "jti": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "email": "my-test-user@example.com" } .<token signature>
sub

認証されたユーザーの固有識別子 (UID) または件名。ユーザー名はユーザープール内で一意ではない可能性があります。sub クレームは、特定のユーザーを識別する最良の方法です。

cognito:groups

ユーザーをメンバーとするユーザープールグループの名前の配列。グループは、アプリに提示する識別子として使用したり、アイデンティティプールへの優先 IAM ロールのリクエストの生成に使用したりできます。

cognito:preferred_role

ユーザーの最も優先度の高いユーザープールグループに関連付けた IAM ロールの ARN。ユーザープールがこのロールクレームを選択する方法の詳細については、「グループへの優先順位の値の割り当て」を参照してください。

iss

トークンを発行した ID プロバイダー。クレームは以下のような形式になります。

https://cognito-idp.<Region>.amazonaws.com/<your user pool ID>

cognito:username

ユーザープール内のユーザーのユーザー名。

nonce

nonce クレームは、OAuth 2.0 の authorize エンドポイントへのリクエストに追加するものと、名前が同じパラメータから取得されます。パラメータを追加すると、Amazon Cognito が発行する ID トークンに nonce クレームが含められます。これは、リプレイ攻撃からの保護のために使用できます。リクエストで nonce 値を指定せずにサードパーティー ID プロバイダーを介した認証を行う場合、Amazon Cognito はノンスを自動的に生成および検証した上で、その値を nonce クレームとして ID トークンに追加します。Amazon Cognito での nonce クレームの実装は、OIDC 標準に基づいています。

origin_jti

ユーザーの更新トークンに関連付けられたトークン失効識別子。Amazon Cognito は、 エンドポイントの取り消しまたは RevokeToken API オペレーションを使用してユーザーのトークンを取り消したかどうかを確認するときに、 origin_jtiクレームを参照します。トークンを取り消すと、Amazon Cognito は同じ origin_jti 値を持つすべてのアクセストークンと ID トークンを無効にします。

cognito:roles

ユーザーのグループに関連付けられた IAM ロールの名前の配列。各ユーザープールグループには、1 つの IAM ロールを関連付けることができます。この配列は、優先順位に関係なく、ユーザーグループのすべての IAM ロールを表します。詳細については、「ユーザープールにグループを追加する」を参照してください。

aud

ユーザーを認証したユーザープールアプリクライアント。Amazon Cognito は、アクセストークン client_id クレームで同じ値をレンダリングします。

identities

ユーザーの identities 属性の内容。この属性には、フェデレーションサインインによって、またはフェデレーションユーザーをローカルプロファイルにリンクすることによってユーザーにリンクした各サードパーティ ID プロバイダープロファイルに関する情報が含まれます。この情報には、プロバイダー名、プロバイダーの固有 ID、およびその他のメタデータが含まれます。

token_use

トークンの本来の目的。ID トークンでは、その値は id です。

auth_time

ユーザーが認証を完了した認証時刻 (Unix の時間形式)。

exp

ユーザーのトークンの有効期限が切れる有効期限 (Unix の時間形式)。

iat

Amazon Cognito がユーザーのトークンを発行した発行時刻 (Unix の時間形式)。

jti

JWT の一意の識別子。

この ID トークンには、「OIDC standard claims」に定義されている、OIDC の標準クレームを含めることができます。また、ユーザープールで定義されたカスタム属性が、この ID トークンに含まれる場合もあります。Amazon Cognito は、属性タイプに関係なく、カスタム属性値を文字列として ID トークンに書き込みます。

注記

ユーザープールのカスタム属性には、常に custom: プレフィックスが先頭に付けられています。

ID トークンの署名

ID トークンの署名は、JWT トークンのヘッダーとペイロードに基づいて計算されます。アプリが受け取る ID トークンのクレームを受け入れる前に、トークンの署名を検証してください。詳細については、「JSON Web トークンの検証」を参照してください。JSON Web トークンの検証