自定义属性未传递到AWS Cognito创建的ID_TOKEN中

时间:2019-02-05 09:00:47

标签: amazon-web-services aws-sdk amazon-cognito oidc aws-userpools

用户成功登录后,我无法从AWS Cognito返回ID_TOKEN中的自定义属性。

我尝试过的步骤:

1。创建的用户池 2.创建应用客户端,并检查自定义属性( customattrib1,customattrib2

用户池屏幕:

enter image description here

在应用客户端配置中检查自定义属性

enter image description here

3。使用admin-create-user api创建的用户

下图显示了用户属性的值:

enter image description here

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"
}

我已经检查了下面的链接,其中包含有关此问题的一些信息,但到目前为止没有任何帮助。

Adding Cognito custom attributes post pool creation?

Cognito User Pool custom attributes do not show up in the ID token if user pool is configured with a SAML identity provider

Cognito User Pool custom attributes do not show up in the ID token if user pool is configured with a SAML identity provider

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

如果我缺少什么,请帮助我。

2 个答案:

答案 0 :(得分:2)

  • 在您的Cognito用户池中,转到“常规设置”->“应用程序客户端”,然后为每个应用程序客户端依次单击Show DetailsSet attribute read and write permissions。选中Readable Attributes下属性名称旁边的复选框。
  • 在您的Cognito用户池中,转到“应用程序客户端设置”->“允许的OAuth范围”并启用profile范围。

答案 1 :(得分:1)

我遇到了同样的麻烦,当我寻找解决方案时出现了您的问题。

当我在“应用程序客户端设置”中启用 profile 范围时,我的自定义属性开始显示在ID令牌中。 (位于:AWS控制台->'用户池'->单击您的池->'应用程序客户端设置'->'允许的OAuth范围')

(顺便说一句:我被documentation的这句话误导了:“ openid 范围返回ID令牌中所有可由客户端读取的用户属性。” openid 范围还不够。)