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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为用户池配置身份提供商

注意

只有在您编辑现有用户池时才会显示 Identity providers 选项卡。

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

允许用户使用社交身份提供商登录

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

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

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

允许用户使用社交身份提供商登录

  1. 选择一个社交身份提供商,例如FacebookGoogleLogin with Amazon,或者SignInWithApple

  2. 对于 Facebook、Google 或 Amazon 应用程序 ID 和应用程序密码,输入您创建 Facebook、Google 或 Login with Amazon 客户端应用程序时收到的应用程序 ID 和应用程序密码。对于使用 Apple 服务 ID、团队 ID、密钥 ID 和私有密钥,请输入您提供给 Apple 的服务 ID 以及您在创建 “使用 Apple 客户端登录” 应用时收到的团队 ID、密钥 ID 和私钥。

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

  4. 适用于授权范围中,输入要映射到用户池属性的社交身份提供商范围的名称。范围定义了您要通过应用程序访问的用户属性 (如 nameemail)。对于 Facebook,这些属性应采用逗号分隔 (例如,public_profile, email)。对于 Google、Login with Amazon 和 Sign in with Apple (CLI),它们应该用空格分隔 (Google 的示例:profile email openid。 Login with Amazon 示例:profile postal_code。 使用 Apple 示例:name email)。 对于 “使用 Apple 登录”(控制台),请使用复选框选中它们。

    最终用户需要同意向您的应用程序提供这些属性。关于范围的更多信息,请参阅 Google、Facebook 和 Login with Amazon 或“使用 Apple 登录”的文档。

  5. 选择启用 Facebook启用 Google启 Login with Amazon,或者启用 Sign in with Apple

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

允许用户使用 OpenID Connect (OIDC) 身份提供商进行登录

您可以允许您的用户通过 OIDC 身份提供商 (IdP) (如 Salesforce 或 Ping Identity) 进行登录。

  1. 转到Amazon Cognito 控制台。系统可能会提示您输入 Amazon 凭证。

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

  3. 从列表中选择现有用户池,或创建用户池

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

  5. 选择 OpenID Connect

  6. 提供商名称中键入一个唯一名称。

  7. 将 OIDC IdP 的客户端 ID 键入到客户端 ID

  8. 将 OIDC IdP 的客户端密钥键入到客户端密钥

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

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

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

  11. 键入 IdP 的 URL,然后选择运行发现

    例如,Salesforce 使用以下 URL:

    https://login.salesforce.com

    注意

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

    1. 如果运行发现不成功,则需要提供授权终端节点令牌终端节点用户信息终端节点Jwks uriJSON Web Key的位置)。

  12. 选择创建提供商

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

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

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

    https://www.example.com
  16. 允许的 OAuth 流程下,启用授权代码授予隐式代码授予

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

  17. 选择 Save Changes (保存更改)

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

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

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

    3. 选择 Save Changes (保存更改)

    4. 选择转到摘要页面

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

允许用户使用 SAML 登录

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

允许用户使用 SAML 登录

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

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

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

  4. Select启用 IdP 注销流当您希望用户在从 Amazon Cognito 注销的同时从 SAML IdP 注销时。

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

    注意

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

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

  5. 选择创建提供商

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

注意

如果您在使用 HTTPS 元数据终端节点 URL 创建 SAML 身份提供商时看见 InvalidParameterException(例如,“Error retrieving metadata from <metadata endpoint> (从 <元数据终端节点> 检索元数据时出错)”),请确保元数据终端节点已正确设置 SSL,并且存在与之关联的有效 SSL 证书。

设置 SAML IdP 以添加签名证书

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

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