翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ID トークンの使用
ID トークンは、、name
、 email
など、認証されたユーザーの ID に関するクレームを含むJSONウェブトークン (JWT)phone_number
。この ID 情報はアプリケーション内で使用できます。ID トークンは、リソースサーバーまたはサーバーアプリケーションに対するユーザーの認証にも使用できます。また、ウェブAPIオペレーションでアプリケーションの外部で ID トークンを使用することもできます。このような場合は、ID トークン内のクレームを信頼する前に、ID トークンの署名を検証する必要があります。「JSON ウェブトークンの検証」を参照してください。
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ウェブ署名 (JWS) を保護するために使用されたキーを示します。ユーザープールの署名キーは、
jwks_uri
エンドポイントIDsで表示できます。kid
パラメータの詳細については、「Key identifier (kid) header parameter」を参照してください。 alg
-
Amazon Cognito が、アクセストークンをセキュア化するために使用した暗号化アルゴリズム。ユーザープールは、SHA-256 RSAの署名であるRS256暗号化アルゴリズムを使用します。
alg
パラメータの詳細については、「Algorithm (alg) header parameter」を参照してください。
ID トークンのデフォルトペイロード
これは ID トークンからのペイロードの例です。認証されたユーザーに関するクレームが含まれています。OpenID Connect (OIDC) の標準クレームの詳細については、OIDC標準クレーム
<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
-
認証されたユーザーの一意の識別子 (UUID)、または件名。ユーザー名はユーザープール内で一意ではない可能性があります。
sub
クレームは、特定のユーザーを識別する最良の方法です。 cognito:groups
-
ユーザーをメンバーとするユーザープールグループの名前の配列。グループは、アプリケーションに提示する識別子にすることも、ID プールから優先IAMロールのリクエストを生成することもできます。
cognito:preferred_role
-
ユーザーの最も優先度の高いユーザープールグループに関連付けたIAMロールARNの 。ユーザープールがこのロールクレームを選択する方法の詳細については、「グループへの優先順位の値の割り当て」を参照してください。
iss
-
トークンを発行した ID プロバイダー。クレームは以下のような形式になります。
https://cognito-idp.
<Region>
.amazonaws.com/<your user pool ID>
cognito:username
-
ユーザープール内のユーザーのユーザー名。
nonce
-
nonce
クレームは、2.0authorize
エンドポイントへのリクエストに追加できるのと同じ名前OAuthのパラメータから取得されます。パラメータを追加すると、Amazon Cognito が発行する ID トークンにnonce
クレームが含められます。これは、リプレイ攻撃からの保護のために使用できます。リクエストでnonce
値を指定せずにサードパーティー ID プロバイダーを介した認証を行う場合、Amazon Cognito はノンスを自動的に生成および検証した上で、その値をnonce
クレームとして ID トークンに追加します。Amazon Cognito でのnonce
クレームの実装は、OIDC標準に基づいています。 origin_jti
-
ユーザーの更新トークンに関連付けられたトークン失効識別子。Amazon Cognito は、 エンドポイントの取り消しまたは RevokeTokenAPIオペレーションでユーザーのトークンを取り消したかどうかを確認するときに、
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標準クレーム でOIDC定義されている標準クレーム
注記
ユーザープールのカスタム属性には、常に というプレフィックスが付けられますcustom:
。
ID トークンの署名
ID トークンの署名は、JWTトークンのヘッダーとペイロードに基づいて計算されます。アプリが受け取る ID トークンのクレームを受け入れる前に、トークンの署名を検証してください。詳細については、JSON「ウェブトークンの検証」を参照してくださいJSON ウェブトークンの検証。