缺少联合 Google 用户的 userAttributes

Missing userAttributes for federated Google User

我正在尝试将 Google 作为 IdP 集成到我们现有的 Cognito 用户池中。到目前为止一切都已设置,我可以 SignUp/SignIn 使用 Google 创建新用户。我正在使用 PreSignUp Lambda 触发器 Link 现有用户或创建一个新的本地用户(如果没有现有用户)。现在我期望 event.Request.UserAttributes['name'] 包含 Google 提供的用户名,或者至少看到 id_token 中的属性。但我认为目前不可能获得这些价值。我们开始使用 Cognito 只是作为 username/password 的商店,并且 none 的 userAttributes 被填充或标记为必需。

我已设置 Google 与以下范围的集成:

在我的 UserPoolClient 中:

在联合部分,我配置了属性映射:

Testwise,我将 name 属性映射到我用来测试东西的自定义属性。但是这和 namename 的映射都不起作用。

我在活动中获得的有效载荷:

{{PreSignUp_ExternalProvider .... Google_11...} {map[cognito:email_alias: cognito:phone_number_alias: email:m...@...m email_verified:true] map[] map[]} {false false false}}

id_token内容:

{
  "at_hash": "..",
  "sub": "52...",
  "email_verified": true,
  "iss": "https://cognito-idp.us-west-2.amazonaws.com/...",
  "cognito:username": "52..",
  "origin_jti": "..",
  "aud": "...",
  "identities": [
    {
      "userId": "11...",
      "providerName": "Google",
      "providerType": "Google",
      "issuer": null,
      "primary": "false",
      "dateCreated": "1648828708886"
    }
  ],
  "token_use": "id",
  "auth_time": 1648828717,
  "exp": 1648830828,
  "iat": 1648830228,
  "jti": "...",
  "email": "m...@...m"
}

access_token内容:

{
  "origin_jti": "02...",
  "sub": "52...",
  "token_use": "access",
  "scope": "openid profile",
  "auth_time": 1648828717,
  "iss": "https://cognito-idp.us-west-2.amazonaws.com/....",
  "exp": 1648829317,
  "iat": 1648828717,
  "version": 2,
  "jti": "..",
  "client_id": "...",
  "username": "52..."
}

现在可以正常使用了,尽管我无法说明错误。我再次重新创建了整个测试集并确保以下值正确:

  • 属性映射
  • 授权范围
  • 允许的 OAuth 范围
  • 前端选择的范围

为了确定,我添加了范围 emailprofileopenid,现在我在预注册触发器 lambda 和ID-Token.