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

为用户池配置身份提供商

注意

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

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

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

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

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

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

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

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

  2. 对于 Facebook (或 Google 或 Amazon) 应用程序 ID,输入您创建 Facebook、Google 或 Login with Amazon 客户端应用程序时收到的应用程序 ID。

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

  4. 对于授权范围,输入要映射到用户池属性的社交身份提供商范围的名称。范围定义了您要通过应用程序访问的用户属性 (如 nameemail)。对于 Facebook,这些属性应采用逗号分隔 (例如,public_profile, email)。对于 Google 和 Login with Amazon,则应采用空格分隔。(Google 示例:profile email openid。Login with Amazon 示例:profile postal_code。)

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

  5. 选择启用 Facebook(或启用 Google启用 Login with Amazon)。

有关社交 IdP 的更多信息,请参阅

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

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

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

  2. 选择 Manage your 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.examle.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. 如果希望用户在从 Amazon Cognito 注销的同时从 SAML IdP 注销,请选择启用 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 以添加签名证书

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

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