了解身分 (ID) 字符 - Amazon Cognito

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

了解身分 (ID) 字符

ID 權杖是 JSON Web 權杖 (JWT),其中包含有關已驗證使用者身分的宣告,例如 nameemailphone_number。您可以在應用程式內部使用此身分資訊。ID 權杖也可以用來向資源伺服器或伺服器應用程式驗證使用者的身分。您也可以將 ID 字符用於應用程式外部的 Web API操作。在那些情況下,您必須先驗證 ID 權杖的簽章,才能信任 ID 權杖中的任何宣告。請參閱 驗證 JSON Web 權杖

您可以將 ID 權杖過期設為 5 分鐘到 1 天的值。此值可根據應用程式用戶端設定。

重要

當您的使用者以託管 UI 或聯合身分提供者 (IdP) 登入時,Amazon Cognito 會設定有效期為 1 小時的工作階段 Cookie。如果您使用託管 UI 或聯合,並且為存取和 ID 權杖指定少於 1 小時的最短持續時間,則您的使用者仍將有一個有效的工作階段,直到 Cookie 到期為止。如果使用者的權杖會在一小時的工作階段內過期,則使用者可以重新整理其權杖,無需重新驗證身分。

ID 權杖標頭

標頭包含兩項資訊:金鑰 ID (kid) 和演算法 (alg)。

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

金鑰 ID。其值表示用來保護權杖 JSON Web Signature (JWS) 的金鑰。您可以在IDsjwks_uri端點檢視使用者集區簽署金鑰。

如需 kid 參數的詳細資訊,請參閱金鑰識別符 (kid) 標頭參數

alg

Amazon Cognito 用來保護存取權杖安全的加密演算法。使用者集區使用RS256密碼編譯演算法,這是 SHA-256 的RSA簽章。

如需 alg 參數的詳細資訊,請參閱演算法 (alg) 標頭參數

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

以您的使用者為成員的使用者集區群組名稱陣列。群組可以是您呈現給應用程式的識別符,也可以從身分集區產生偏好IAM角色的請求。

cognito:preferred_role

與使用者最高優先順序使用者集區群組相關聯的IAM角色ARN的 。如需使用者集區如何選取此角色宣告的詳細資訊,請參閱指定優先順序值給群組

iss

發行權杖的身分提供者。宣告的格式如下。

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

cognito:username

您的使用者在您的使用者集區中的使用者名稱。

nonce

nonce 宣告來自相同名稱的參數,您可以將 新增至 2.0 OAuth authorize端點的請求。新增參數時,nonce 宣告會包含在 Amazon Cognito 發出的 ID 權杖中,您可以使用它來防止重新執行攻擊。如果您未提供 nonce 值,Amazon Cognito 會在您透過第三方身分提供者進行身分驗證時自動產生並驗證 Nonce,然後將其新增為 ID 權杖中的 nonce 宣告。在 Amazon Cognito 中實作nonce宣告是以OIDC標準 為基礎。

origin_jti

與使用者的重新整理權杖相關的權杖撤銷識別符。Amazon Cognito 會在檢查您是否使用 撤銷端點RevokeTokenAPI操作撤銷使用者的權杖時參考origin_jti宣告。在撤銷權杖時,Amazon Cognito 會使所有具相同 origin_jti 值的存取權和 ID 權杖無效。

cognito:roles

與您使用者群組相關聯的IAM角色名稱陣列。每個使用者集區群組都可以有一個與其相關聯的IAM角色。此陣列代表使用者群組的所有IAM角色,無論優先順序為何。如需詳細資訊,請參閱新增群組至使用者集區

aud

對您的使用者進行身分驗證的使用者集區應用程式用戶端。Amazon Cognito 會在存取權杖 client_id 宣告中呈現相同的值。

identities

使用者的 identities 屬性內容。此屬性包含您藉由聯合登入或將聯合身分使用者連結至本機設定檔,連結至使用者的每一個第三方身分提供者設定檔的相關資訊。此資訊包含其提供者名稱、提供者唯一 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 Web 權杖。驗證 JSON Web 權杖。。