簡體   English   中英

自定義屬性未傳遞到 AWS Cognito 創建的 ID_TOKEN

[英]Custom attribute not passed into ID_TOKEN created by AWS Cognito

用戶成功登錄后,我無法獲取從 AWS Cognito 返回的 ID_TOKEN 中的自定義屬性

我嘗試的步驟:

1.創建用戶池 2.創建應用程序客戶端並檢查自定義屬性( customattrib1,customattrib2

用戶池屏幕:

在此處輸入圖像描述

檢查應用程序客戶端配置中的自定義屬性

在此處輸入圖像描述

3.創建用戶使用admin-create-user api

下圖顯示了用戶屬性的值:

在此處輸入圖像描述

4.在客戶端應用程序中使用 aws-cognito-auth.js 登錄用戶。返回的 ID 令牌不包含自定義屬性。

ID_TOKEN

{
  "at_hash": "PKfjYDaiEty5mUOyJZlPQA",
  "sub": "639d5016-2bd3-4c6f-b82d-21ae38071b09",
  "email_verified": true,
  "iss": "https://cognito-idp.ap-south-1.amazonaws.com/ap-south-1_XXXXXXX",
  "phone_number_verified": true,
  "cognito:username": "testuser",
  "aud": "XYXYXYXYX",
  "token_use": "id",
  "auth_time": 1549349674,
  "phone_number": "##########",
  "exp": 1549353274,
  "iat": 1549349674,
  "email": "testuser@somedomain.com"
}

我已經檢查了下面的鏈接,其中有一些關於這個問題的信息,但到目前為止沒有任何幫助。

在池創建后添加 Cognito 自定義屬性?

如果用戶池配置了 SAML 身份提供商,Cognito 用戶池自定義屬性不會顯示在 ID 令牌中

如果用戶池配置了 SAML 身份提供商,Cognito 用戶池自定義屬性不會顯示在 ID 令牌中

https://www.reddit.com/r/aws/comments/a07dwg/cognito_add_custom_attribute_to_jwt_token/

請幫我弄清楚我是否遺漏了什么..

  • 在您的 Cognito 用戶池中,轉到 General Settings -> App Clients,然后為每個應用程序客戶端單擊Show Details ,然后Set attribute read and write permissions 選中Readable Attributes下屬性名稱旁邊的復選框。
  • 在您的 Cognito 用戶池中,轉到應用客戶端設置 -> 允許的 OAuth 范圍並啟用profile范圍。

我遇到了同樣的問題,在我尋找解決方案時出現了您的問題。

當我在“應用程序客戶端設置”中啟用配置文件范圍時,我的自定義屬性開始出現在 ID 令牌中。 (可在:AWS 控制台->“用戶池”-> 單擊您的池->“應用程序客戶端設置”->“允許的 OAuth 范圍”)

(順便說一句:我被文檔中的這句話誤導了:“ openid范圍返回客戶端可讀的 ID 令牌中的所有用戶屬性”。在我的情況下, openid范圍是不夠的。)

對我來說,問題是我正在從以下位置獲取令牌(在使用 Amplify js 庫進行身份驗證后):

Auth.currentSession().then(u => u.getAccessToken().getJwtToken())

代替:

Auth.currentSession().then(u => u.getIdToken().getJwtToken());

改完后效果不錯! 希望能幫助到你!

對於來這里使用 Amplify SDK(如 OP)的任何人 - 復制和粘貼指出了一個重要點,即您的客戶還需要明確要求 scope。

在我的例子中,我們使用的是 Angular。將“配置文件”添加到“允許的 OAuth 范圍”用戶池后 - 您還需要在客戶端配置中指定它:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM