ID トークンの使用 - Amazon Cognito

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

ID トークンの使用

ID トークンは、、nameemailなど、認証されたユーザーの 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標準クレームのリストを参照してください。を使用して、独自の設計のクレームを追加できますトークン生成前の Lambda トリガー

<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.0 authorizeエンドポイントへのリクエストに追加できるのと同じ名前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定義されている標準クレームを含めることができます。また、ユーザープールで定義されたカスタム属性が、この ID トークンに含まれる場合もあります。Amazon Cognito は、属性タイプに関係なく、カスタム属性値を文字列として ID トークンに書き込みます。

注記

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

ID トークンの署名

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