Amazon Cognito
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

指定适用于用户池的身份提供商属性映射

您可以使用 AWS 管理控制台、AWS CLI 或 API 来指定用户池的身份提供商的属性映射。

要求

将用户池属性映射到身份池属性时,请记住以下要求:

  • 用户登录您的应用程序时,所需的每个用户池属性必须存在映射。例如,如果您的用户池需要电子邮件属性来登录,则将此属性映射到身份提供商中的对等属性。

  • 对于每个映射的用户池属性,最大值长度(2048 个字符)必须足够大,以容纳 Amazon Cognito 从身份提供商处获取的值。否则,用户登录到您的应用程序时 Amazon Cognito 会引发错误。如果您将自定义属性映射到身份提供商令牌,请将长度设置为 2048 个字符。

  • 对于以下身份提供商,username 用户池属性必须仅映射到特定属性:

    身份提供商 映射到 username 的属性
    Facebook id
    Google sub
    Login with Amazon user_id
    OpenID Connect (OIDC) 提供商 sub
  • 用户登录您的应用程序时,Amazon Cognito 必须能够更新映射的用户池属性。用户通过某个身份提供商登录时,Amazon Cognito 使用来自身份提供商的最新信息更新映射的属性。Amazon Cognito 更新各个映射的属性,即使当前值已经与最新信息匹配。如果 Amazon Cognito 无法更新属性,它会引发错误。要确保 Amazon Cognito 可以更新属性,请检查以下要求:

    • 映射的用户池属性必须可变。具有可变属性写入权限的应用程序客户端可以更新这些属性。在 Amazon Cognito 控制台中定义用户池属性时,您可以将这些属性设置为可变。或者,如果您使用 CreateUserPool API 操作创建用户池,则可将这些属性中的每个属性的 Mutable 参数设置为 true

    • 在应用程序的应用程序客户端设置中,映射的属性必须可写。您可在 Amazon Cognito 控制台的应用程序客户端页面中设置哪些属性可写。或者,如果您使用 CreateUserPoolClient API 操作创建应用程序客户端,则可以将这些属性添加到 WriteAttributes 数组。

指定适用于用户池的身份提供商属性映射 (AWS 管理控制台)

您可以使用 AWS 管理控制台指定用户池的身份提供商的属性映射。

指定社交身份提供商属性映射

  1. 登录 Amazon Cognito 控制台

  2. 在导航窗格中,选择管理您的用户池,然后选择要编辑的用户池。

  3. 选择属性映射选项卡。

  4. 选择 FacebookGoogleAmazon 选项卡。

  5. 对于需要映射的每个属性,请执行以下步骤:

    1. 选中截取 复选框。

    2. 对于用户池属性,在下拉列表中,选择要映射到社交身份提供商属性的用户池属性。

    3. 如果您需要更多属性,请选择添加 Facebook 属性(或添加 Google 属性添加 Amazon 属性)并执行以下步骤:

      1. Facebook 属性(或 Google 属性Amazon 属性)字段中,输入要映射的属性的名称。

      2. 用户池属性字段中,从下拉列表中选择要将社交身份提供商属性映射到的用户池属性。

    4. 选择 Save changes

指定 SAML 提供商属性映射

  1. 登录 Amazon Cognito 控制台

  2. 在导航窗格中,选择管理您的用户池,然后选择要编辑的用户池。

  3. 选择属性映射选项卡。

  4. 选择 SAML 选项卡。

  5. 选中要捕获其值的所有属性对应的截取框。如果您清除某个属性的截取框并保存您的更改,则将删除该属性的映射。

  6. 从下拉列表中选择身份提供商。

  7. 对于需要映射的每个属性,请执行以下步骤:

    1. 选择添加 SAML 属性

    2. SAML 属性字段中,输入要映射的 SAML 属性的名称。

    3. 用户池属性字段中,从下拉列表中选择要将 SAML 属性映射到的用户池属性。

  8. 选择 Save changes

指定适用于用户池的身份提供商属性映射(AWS CLI 和 AWS API)

使用以下命令可为您的用户池指定身份提供商属性映射。

在提供商创建时指定属性映射

  • AWS CLI:aws cognito-idp create-identity-provider

    带元数据文件的示例:aws cognito-idp create-identity-provider --user-pool-id <user_pool_id> --provider-name=SAML_provider_1 --provider-type SAML --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

    其中 details.json 包含:

    { "MetadataFile": "<SAML metadata XML>" }

    注意

    如果 <SAML metadata XML> 包含任何引号 ("),则必须对其进行转义 (\")。

    带元数据 URL 的示例:aws cognito-idp create-identity-provider --user-pool-id <user_pool_id> --provider-name=SAML_provider_1 --provider-type SAML --provider-details MetadataURL=<metadata_url> --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

  • AWS API:CreateIdentityProvider

指定现有身份提供商的属性映射

  • AWS CLI:aws cognito-idp update-identity-provider

    示例:aws cognito-idp update-identity-provider --user-pool-id <user_pool_id> --provider-name <provider_name> --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress

  • AWS API:UpdateIdentityProvider

获取有关特定身份提供商的属性映射的信息

  • AWS CLI:aws cognito-idp describe-identity-provider

    示例:aws cognito-idp describe-identity-provider --user-pool-id <user_pool_id> --provider-name <provider_name>

  • AWS API:DescribeIdentityProvider