通过第三方添加用户池登录 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

通过第三方添加用户池登录

您的应用程序用户可以通过用户池直接登录,也可以通过第三方身份提供商(IdP)联合。用户池管理处理以下令牌的开销:从通过 Facebook、Google、亚马逊和 Apple 进行的社交登录返回的令牌以及从 OpenID Connect(OIDC)和 SAML IdP 返回的令牌。利用内置托管 Web UI,Amazon Cognito 为来自所有 IdP 的经过身份验证的用户提供令牌处理和管理。这样,后端系统可以基于一组用户池令牌实现标准化。

联合登录在 Amazon Cognito 用户群体中的工作方式

通过第三方(联合身份验证)进行登录可在 Amazon Cognito 用户池中实现。此功能不依赖于通过 Amazon Cognito 身份池(联合身份)实现的联合身份验证。


                社交登录的身份验证概述

Amazon Cognito 是用户目录和 OAuth 2.0 身份提供者 (IdP)。当您以本机用户身份登录 Amazon Cognito 目录时,您的用户群体是应用程序的 IdP。本机用户是指那些注册或管理员直接在用户群体中创建的用户。

当您将 Amazon Cognito 连接到社交、SAML 或 OpenID Connect (OIDC) IdP 时,您的用户群体充当多个服务提供商和应用程序之间的桥梁。对于您的 IdP 而言,Amazon Cognito 是服务提供商 (SP)。您的 IdP 将 OIDC ID 令牌或 SAML 断言传递给 Amazon Cognito。Amazon Cognito 会在令牌或断言中读取有关您用户的声明,并将这些声明映射到用户群体目录中的新用户配置文件。

然后,Amazon Cognito 在其自己的目录中为联合用户创建用户配置文件。Amazon Cognito 根据来自 IdP 的声明向用户添加属性。对于 OIDC 和社交身份提供者,则向 IDP 运营的公有 userinfo 端点添加属性。当映射的 IdP 属性发生变化时,用户的属性会在用户群体中发生变化。您还可以添加更多属性,这些属性独立于 IdP 中的属性。

Amazon Cognito 为联合用户创建配置文件后,它会更改其功能并将自己显示为应用程序的 IdP(现在是 SP)。Amazon Cognito 是 OIDC 和 OAuth 2.0 IdP 的组合。它生成访问令牌、ID 令牌和刷新令牌。有关令牌的更多信息,请参阅将令牌与用户池结合使用

您必须设计一个与 Amazon Cognito 集成的应用程序,以便对用户进行身份验证和授权,无论是联合用户还是本机用户。

应用程序作为 Amazon Cognito SP 的责任

验证和处理令牌中的信息

在大多数情况下,Amazon Cognito 将经过身份验证的用户重新导向到它附加了授权码的应用程序 URL。您的应用程序将此代码交换为访问权限、ID 和刷新令牌。然后,它必须检查令牌的有效性,并根据令牌中的声明向用户提供信息。

使用 Amazon Cognito API 请求响应身份验证事件

您的应用程序必须与 Amazon Cognito 用户群体 API身份验证 API 端点集成。身份验证 API 会将用户进行登录和注销,并管理令牌。用户群体 API 具有多种操作,用于管理您的用户群体、用户以及身份验证环境的安全性。当应用程序收到来自 Amazon Cognito 的响应时,它必须知道下一步该怎么做。

关于 Amazon Cognito 用户群体第三方登录需要了解的事项

  • 如果您希望用户使用联合提供商登录,则必须选择域。这将设置 Amazon Cognito 托管的 UI 和身份验证 API 终端节点。有关更多信息,请参阅将您自己的域用于托管 UI

  • 您不能使用 API 操作(如 InitiateAuthAdminInitiateAuth)以联合用户身份登录。联合用户只能使用登录端点对端点授权进行登录。

  • 您可以使用 对端点授权 通过托管 UI 透明地将用户重定向到联合提供商登录。有关示例,请参阅 在企业控制面板中为 Amazon Cognito 应用程序添加书签

  • 当托管 UI 将会话重定向到联合 IdP 时,Amazon Cognito 会在请求中包含 user-agent 标头 Amazon/Cognito

  • Amazon Cognito 从固定标识符和 IdP 名称的组合中派生联合用户配置文件的 username 属性。要生成符合自定义要求的用户名,请创建到 preferred_username 属性的映射。有关更多信息,请参阅有关映射的需知信息

    示例:MyIDP_bob@example.com

  • Amazon Cognito 将有关联合用户身份的信息记录到属性中,并在 ID 令牌中记录一个称为 identities 的声明。此声明包含用户的提供商以及提供商提供的唯一 ID。您无法直接在用户配置文件中更改 identities 属性。有关如何关联联合用户的更多信息,请参阅将联合用户与现有用户配置文件关联