28

成功用户登录后,我无法在从 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/

请帮我弄清楚我是否遗漏了什么..

4

2 回答 2

41
  • 在您的 Cognito 用户池中,转到常规设置 -> 应用程序客户端,然后为每个应用程序客户端单击Show Details,然后单击Set attribute read and write permissions。选中 下您的属性名称旁边的复选框Readable Attributes
  • 在您的 Cognito 用户池中,转到 App client settings -> Allowed OAuth Scopes 并启用profile范围。
于 2019-07-02T09:32:46.507 回答
13

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

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

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

于 2019-03-14T15:30:54.850 回答