为用户池配置身份提供商 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

为用户池配置身份提供商

注意

只有在您编辑现有用户池时才会显示 Identity providers (身份提供商) 选项卡。

Identity providers (身份提供商) 选项卡上,您可以为自己的用户池指定身份提供商(IdP)。有关更多信息,请参阅 通过第三方添加用户池登录

使用社交 IdP 设置用户登录

您可以使用联合身份验证,将 Amazon Cognito 用户池与社交身份提供商(如 Facebook、Google 和 Login with Amazon)集成起来。

要添加社交身份提供商,您首先要通过该身份提供商创建一个开发人员账户。在拥有开发人员账户后,您应向身份提供商注册您的应用程序。该身份提供商将为您的应用程序创建应用程序 ID 和应用程序密钥,然后您在您的 Amazon Cognito 用户池中配置这些值。

以下是帮助您开始使用社交身份提供商的链接:

Original console

将用户登录与社交 IdP 集成

  1. 选择一个社交身份提供商,例如 FacebookGoogleLogin with AmazonSign In with Apple

  2. 根据您选择的 IdP,完成以下步骤之一,从而输入社交身份提供商的信息:

    Facebook、Google 和 Login with Amazon

    输入您创建客户端应用程序时收到的应用程序密钥。

    Sign In with Apple

    输入您向 Apple 提供的服务 ID,以及创建应用程序客户端时收到的团队 ID、密钥 ID 和私有密钥。

  3. 对于应用程序密钥,输入您创建客户端应用程序时收到的应用程序密钥。

  4. 对于 Authorize scopes(授权范围),输入要映射到用户池属性的社交身份提供商范围的名称。范围定义了您要通过应用程序访问的用户属性(如名称和电子邮件)。输入范围时,根据您选择的 IdP 使用以下准则:

    • Facebook – 以英文逗号分隔范围。例如:

      public_profile, email

    • Google、Login with Amazon 和 Sign In with Apple – 以空格分隔范围。例如:

      • Google: profile email openid

      • Login with Amazon: profile postal_code

      • Sign In with Apple: name email

        注意

        对于 Sign in with Apple(控制台),请使用复选框以选择范围。

    您的用户需要同意向应用程序提供这些属性。关于每个社交身份提供商范围的更多信息,请参阅 Google、Facebook 和 Login with Amazon 或 Sign In with Apple 的文档。

  5. 选择 Enable Facebook (启用 Facebook)Enable Google (启用 Google)Enable Login with Amazon (启用 Login with Amazon)Enable Sign in with Apple (启用 Sign in with Apple)

New console

将用户登录与社交 IdP 集成

  1. 登录 Amazon Cognito 控制台。如果出现提示,请输入 Amazon 凭证。

  2. 在导航窗格中,选择 User Pools(用户池),然后选择要编辑的用户池。

  3. 选择 Sign-in experience(登录体验)选项卡并找到 Federated sign-in(联合登录)。

  4. 选择 Add an identity provider(添加身份提供商),或者选择已配置的身份提供商(例如 FacebookGoogleAmazonApple),找到 Identity provider information(身份提供商信息),然后选择 Edit(编辑)。有关添加社交身份提供商的更多信息,请参阅向用户池添加社交身份提供商

  5. 根据您选择的 IdP,完成以下步骤之一,从而输入社交身份提供商的信息:

    Facebook、Google 和 Login with Amazon

    输入您创建客户端应用程序时收到的应用程序密钥。

    Sign In with Apple

    输入您向 Apple 提供的服务 ID,以及创建应用程序客户端时收到的团队 ID、密钥 ID 和私有密钥。

  6. 对于 Authorize scopes(授权范围),输入要映射到用户池属性的社交身份提供商范围的名称。范围定义了您要通过应用程序访问的用户属性(如名称和电子邮件)。输入范围时,根据您选择的 IdP 使用以下准则:

    • Facebook – 以英文逗号分隔范围。例如:

      public_profile, email

    • Google、Login with Amazon 和 Sign In with Apple – 以空格分隔范围。例如:

      • Google: profile email openid

      • Login with Amazon: profile postal_code

      • Sign In with Apple: name email

        注意

        对于 Sign in with Apple(控制台),请使用复选框以选择范围。

  7. 选择保存更改

  8. App client integration(应用程序客户端集成)选项卡上的列表中选择一个 App clients(应用程序客户端),然后选择 Edit hosted UI settings(编辑托管 UI 设置)。将新的社交身份提供商添加到 Identity providers(身份提供商)下的应用程序客户端。

  9. 选择保存更改

有关社交 IdP 的更多信息,请参阅 向用户池添加社交身份提供商

使用 OIDC IdP 设置用户登录

您可以将用户登录与 OpenID Connect (OIDC) 身份提供商 (IdP) 集成,例如 Salesforce 或 Ping Identity。

Original console
  1. 转到 Amazon Cognito 控制台。如果出现提示,请输入 Amazon 凭证。

  2. 选择 Manage User Pools (管理用户池)

  3. 从列表中选择现有用户池,或 create a user pool(创建用户池)。

  4. 在左侧导航栏上,选择身份提供商

  5. 选择 OpenID Connect

  6. Provider name(提供商名称)中输入一个唯一名称。

  7. 将 OIDC IdP 的客户端 ID 输入到 Client ID(客户端 ID)中。

  8. 将 OIDC IdP 的客户端密钥输入到 Client secret(客户端密钥)中。

  9. 在下拉列表中,选择 Amazon Cognito 用于将用户详细信息从 userinfo 端点提取到 Attributes request method(属性请求方法)的 HTTP 方法(GET 或 POST)。

  10. 输入要授权的范围的名称。范围定义了您要通过应用程序访问的用户属性 (如 nameemail)。根据 OAuth 2.0 规范,范围由空格分隔。

    您的应用程序用户需要同意向您的应用程序提供这些属性。

  11. 输入 IdP 的 URL,然后选择 Run discovery(运行发现)。例如,Salesforce 使用以下 URL:

    https://login.salesforce.com

    注意

    URL 应该以 https:// 开头,并且不应以下斜杠 / 结尾。

    1. 如果 Run discovery(运行发现)不成功,则必须提供 Authorization endpoint(授权端点)、Token endpoint(令牌端点)、Userinfo endpoint(Userinfo 端点)和 Jwks uri [JSON Web Key(JSON Web 密钥)的位置]。

  12. 选择创建提供商

  13. 在左侧导航栏上,选择应用程序客户端设置

  14. 选择您的 OIDC 提供商作为其中一个启用身份提供商

  15. 输入回调 URL,供 Amazon Cognito 授权服务器在用户通过身份验证之后进行调用。这是页面的 URL,Amazon Cognito 在您的用户成功登录后将其重定向到该页面。

    https://www.example.com
  16. Allowed OAuth Flows(允许的 OAuth 流程)下,激活 Authorization code grant(授权代码授予)和 Implicit code grant(隐式代码授予)。

    除非您希望明确地排除一个允许的 OAuth 范围,否则请选中所有“允许的 OAuth 范围”的复选框。

  17. 选择保存更改

  18. 在左侧导航栏的属性映射选项卡上,将 OIDC 声明的映射添加到用户池属性。

    1. 作为默认值,OIDC 声明 sub 将映射到用户池属性用户名。您可以将其他 OIDC 声明映射到用户池属性。输入 OIDC 声明,然后从下拉列表中选择对应的用户池属性。例如,email(电子邮件)声明通常会映射到用户池 Email(电子邮件)属性中。

    2. 在下拉列表中,选择目标用户池属性。

    3. 选择保存更改

    4. 选择转到摘要页面

New console
  1. 转到 Amazon Cognito 控制台。如果出现提示,请输入 Amazon 凭证。

  2. 从导航菜单中选择 User Pools(用户池)。

  3. 从列表中选择现有用户池,或 create a user pool(创建用户池)。

  4. 选择 Sign-in experience(登录体验)选项卡。找到 Federated sign-in(联合登录),然后选择 Add an identity provider(添加身份提供商)。

  5. 选择 OpenID Connect 身份提供商。

  6. Provider name(提供商名称)中输入一个唯一名称。

  7. 将您从提供商那里收到的客户端 ID 输入到 Client ID(客户端 ID)。

  8. 将您从提供商那里收到的客户端密钥输入到 Client secret(客户端密钥)。

  9. 为该提供商输入 Authorized scopes(授权范围)。范围定义了应用程序将向您的提供商请求的用户属性组(例如 nameemail)。根据 OAuth 2.0 规范,范围必须以空格分隔。

    您的用户必须同意向您的应用程序提供这些属性。

  10. 请选择一个 Attribute request method(属性请求方法),以便为 Amazon Cognito 提供 HTTP 方法(GET 或 POST),Amazon Cognito 使用该方法从提供商运营的 userInfo 端点中获取用户的详细信息。

  11. 请选择 Setup method(设置方法)并通过 Auto fill through issuer URL(自动填充发布者 URL)或 Manual input(手动输入)检索 OpenID Connect 端点。当您的提供商具有公有 .well-known/openid-configuration 端点且 Amazon Cognito 可以在其中检索 authorizationtokenuserInfojwks_uri 端点的 URL 时,使用 Auto fill through issuer URL(自动填充发布者 URL)。

  12. 请输入发布者 URL 或 IdP 中的 authorizationtokenuserInfojwks_uri 端点 URL。

    注意

    您只能将端口号 443 和 80 用于发现、自动填充和手动输入的 URL。如果您的 OIDC 提供商使用任何非标准 TCP 端口,则用户登录失败。

    发布者 URL 必须以 https:// 开头,而且不得以 / 字符结尾。例如,Salesforce 使用以下 URL:

    https://login.salesforce.com

    与您的发布者 URL 关联的 openid-configuration 文档必须为以下值提供 HTTPS URL:authorization_endpointtoken_endpointuserinfo_endpointjwks_uri。同样,当您选择 Manula input(手动输入)时,只能输入 HTTPS URL。

  13. 默认情况下,sub OIDC 声明将映射到用户池 Username(用户名)属性中。您可以将其他 OIDC 声明映射到用户池属性。输入 OIDC 声明,然后从下拉列表中选择对应的用户池属性。例如,声明 email 通常会映射到用户池属性电子邮件

  14. 请将身份提供商的其它属性映射到您的用户池。有关更多信息,请参阅指定适用于用户池的身份提供程序属性映射

  15. 选择创建

  16. App client integration(应用程序客户端集成)选项卡上的列表中选择 App clients(应用程序客户端)的其中一个,然后选择 Edit hosted UI settings(编辑托管 UI 设置)。将新的 OIDC 身份提供商添加到 Identity providers(身份提供商)下的应用程序客户端。

  17. 选择保存更改

有关 OIDC IdP 的更多信息,请参阅向用户池添加 OIDC 身份提供商

使用 SAML IdP 设置用户登录

您可以使用 Amazon Cognito 用户池的联合身份验证与 SAML 身份提供商(IdP)集成。您可以通过上传文件或输入元数据文档端点 URL 来提供元数据文档。有关获取第三方 SAML IdP 元数据文档的信息,请参阅 将第三方 SAML 身份提供商与 Amazon Cognito 用户池集成

Original console

将用户登录与 SAML IdP 集成

  1. 选择 SAML 以显示 SAML 身份提供商选项。

  2. 要上传元数据文档,请选择 Select file (选择文件),或输入元数据文档端点 URL。元数据文档必须是有效的 XML 文件。

  3. 输入您的 SAML Provider name (提供商名称),例如 "SAML_provider_1",以及您需要的任何 Identifiers (标识符)。提供商名称是必需的;标识符是可选的。有关更多信息,请参阅 向用户池添加 SAML 身份提供商

  4. 如果希望用户在从 Amazon Cognito 注销的同时从 SAML IdP 注销,请选择 Enable IdP sign out flow (启用 IdP 注销流程)

    如果启用此流程,在调用 LOGOUT 端点 时,将会向 SAML IdP 发送已签名的注销请求。

    注意

    如果选择此选项,并且您的 SAML IdP 需要已签名的注销请求,则您还需要为您的 SAML IdP 配置 Amazon Cognito 提供的签名证书。

    SAML IdP 将处理已签名的注销请求并从 Amazon Cognito 会话中注销您的用户。

  5. 选择创建提供商

  6. 要创建其他提供商,请重复前面的步骤。

New console

在您的用户池中配置 SAML 2.0 身份提供商

  1. 转到 Amazon Cognito 控制台。如果出现提示,请输入 Amazon 凭证。

  2. 选择 User Pools(用户池)。

  3. 从列表中选择现有用户池,或 create a user pool(创建用户池)。

  4. 选择 Sign-in experience(登录体验)选项卡。找到 Federated sign-in(联合登录),然后选择 Add an identity provider(添加身份提供商)。

  5. 选择 SAML 身份提供商。

  6. 输入以逗号分隔的 Identifiers(标识符)。标识符指示 Amazon Cognito 检查用户登录电子邮件地址,然后将用户引导到与其域对应的提供商。

  7. 如果您希望 Amazon Cognito 在用户注销时向您的提供商发送已签名的注销请求,请选择 Add sign-out flow(添加注销流程)。配置 SAML 2.0 身份提供商,向您配置托管 UI 时 Amazon Cognito 创建的 https://<your Amazon Cognito domain>/saml2/logout 端点发送注销响应。此 saml2/logout 端点使用 POST 绑定。

    注意

    如果选择此选项,并且您的 SAML 身份提供商需要已签名的注销请求,则您还需要为您的 SAML IdP 配置 Amazon Cognito 提供的签名证书。

    SAML IdP 将处理已签名的注销请求并从 Amazon Cognito 会话中注销您的用户。

  8. 选择 Metadata document source(元数据文档源)。如果您的身份提供商在公有 URL 上提供 SAML 元数据,则可以选择 Metadata document URL(元数据文档 URL)然后输入该公有 URL。否则,请选择 Upload metadata document(上载元数据文档),然后选择您之前从提供商下载的元数据文件。

    注意

    如果您的提供商具有公有端点,我们建议您输入元数据文档 URL,而不是上载文件。如果您使用 URL,Amazon Cognito 会自动刷新元数据。通常,元数据刷新操作每 6 小时执行一次或在元数据过期前执行(以时间较早者为准)。

  9. Map attributes between your SAML provider and your app(在 SAML 提供商和应用程序之间映射属性)将 SAML 提供程序属性映射到用户池中的用户配置文件。在属性映射中包含用户池必需属性。

    例如,当您选择 User pool attribute(用户池属性)email 时,按照您的身份提供商提供的 SAML 断言中显示的内容,输入 SAML 属性名称。您的身份提供商可能会提供示例 SAML 断言以供参考。一些身份提供商使用简单名称(如 email),另一些则使用类似于下面 URL 格式的属性名称:

    http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
  10. 选择创建

注意

如果您在使用 HTTPS 元数据端点 URL 创建 SAML IdP 时看见 InvalidParameterException,请确保元数据端点已正确设置 SSL,并且存在与之关联的有效 SSL 证书。这种例外的一个例子是“Error retrieving metadata from <metadata endpoint>”(从 <元数据端点> 检索元数据时出错)。

设置 SAML IdP 以添加签名证书

  • 要获取包含 IdP 用于验证已签名注销请求的公钥的证书,请在 Federation(联合身份)控制台页面上的 Identity providers(身份提供商)下,在 SAML 对话框的 Active SAML Providers(使用中的 SAML 提供商)下选择 Show signing certificate(显示签名证书)对话框。

有关 SAML IdP 的更多信息,请参阅 向用户池添加 SAML 身份提供商