View a markdown version of this page

身份提供者和依赖方端点 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

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

身份提供者和依赖方端点

联合端点是用户池端点,用于用户池使用的身份验证标准之一。这些端点包括 SAML ACS URL、OIDC 发现端点以及用户池角色(既可以作为身份提供者,也可以作为依赖方)的服务端点。联合端点启动身份验证流程,接收来自客户端的身份验证证明 IdPs,并向客户端发放令牌。他们与 IdPs应用程序和管理员交互,但不与用户交互。

在此页之后的整页主题包含有关 OAuth 2.0 和 OIDC 提供者端点的详细信息,这些端点会在您向用户池添加域后变得可用。下图是所有联合身份验证端点的列表。

用户池域的示例有:

  1. 前缀域:mydomain.auth.us-east-1.amazoncognito.com

  2. 自定义域:auth.example.com

用户池联合身份验证端点
端点 URL 说明 如何访问此端点
https://Your user pool domain/oauth2/authorize 将用户重定向到托管登录或使用其 IdP 登录。 在客户浏览器中调用以开始用户身份验证。请参阅对端点授权。
https://Your user pool domain/oauth2/token 根据授权码或客户端凭证请求返回令牌。 应用程序请求检索令牌。请参阅令牌端点。
https://Your user pool domain/oauth2/userInfo 根据访问令牌中的 OAuth 2.0 范围和用户身份返回用户属性。 应用程序请求检索用户配置文件。请参阅userInfo 端点。
https://Your user pool domain/oauth2/revoke 撤销刷新令牌和关联的访问令牌。 应用程序请求撤销令牌。请参阅撤销端点。
https://cognito-idp.Region.amazonaws.com/ /.well your user pool ID---配置 known/openid 您的用户池 OIDC 架构的目录。 1 应用程序请求查找用户池发布者元数据。
https://cognito-idp.Region.amazonaws.com/ /.well your user pool ID-.json known/jwks 可用于验证亚马逊 Cognito 令牌的公钥。 2 应用程序请求验证 JWT。
https://Your user pool domain/oauth2/idpresponse 社交身份提供者必须使用授权码将用户重新导向到此端点。Amazon Cognito 在验证您的联合用户时将代码兑换为令牌。 已从 OIDC IdP 登录重定向为 IdP 客户端回调 URL。
https://Your user pool domain/saml2/idpresponse 与 SAML 2.0 身份提供者集成所需的断言使用者响应(ACS)URL。 从 SAML 2.0 IdP 重定向为 ACS 网址或登录起点。 IdP-initiated 3
https://Your user pool domain/saml2/logout 用于与 SAML 2.0 身份提供者集成的单点注销(SLO)URL。 已从 SAML 2.0 IdP 重定向为单点注销(SLO)URL。仅接受 POST 绑定。

1 可能会随时使用其他信息更新 openid-configuration 文档,以保持端点符合 OIDC 和 OAuth2 规范。

2 可以使用新的公共令牌签名密钥随时更新 jwks.json JSON 文件。

3 有关 IdP-initiated SAML 登录的更多信息,请参阅。实现 IdP-initiated SAML 登录

有关 OpenID Connect 和 OAuth 标准的更多信息,请参阅 OpenID Connect 1.0 和 OAuth 2.0。

Amazon Cognito 用户池作为 OIDC 发行机构

Amazon Cognito 用户池充当 OpenID Connect (OIDC) 身份提供商,充当应用程序库可用于 OIDC 联合的颁发者。OIDC 联合的应用程序库可以将两个不同的路径引用为自动发现端点,如下所述。此端点提供对 JSON Web 密钥集 (JWKS) 的访问权限,/.well-known/jwks.json以及位于的 OIDC 发现元数据/.well-known/openid-configuration,应用程序可以在其中发现授权、令牌和用户信息端点。

支持 OIDC 自动发现的应用程序可以通过查询这些众所周知的端点来自动配置自身。对于不支持自动发现的应用程序,您可以使用上一节中列出的特定 OIDC 端点对应用程序进行硬编码。

用户池发行者类型
原始颁发者

用户池的当前默认颁发者配置。发行者 URL 托管在用户池的区域中,并提供特定于该区域的 OIDC 终端节点。

原始发行人采用这种格式https://cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE。

更新的颁发者

建议用于所有用户池,包括用于多区域复制的用户池。更新的颁发者在多个区域托管相同的 JWKS 内容,从而提高了恢复能力和效率。

更新的发行人采用格式https://issuer-cognito-idp.us-east-1.amazonaws.com/us-east-1_EXAMPLE,其中Region是您的主要 Amazon Web Services 区域 用户池。

注意

更新后的发行者类型与应用程序负载均衡器身份验证的本地 Amazon Cognito 集成(authenticate-cognito操作)不兼容。要将更新的发行者与 Application Load Balancer 配合使用,请改为配置通用 OIDC 集成(authenticate-oidc操作),并提供用户池的 OIDC 终端节点。有关更多信息,请参阅使用 Application Load Balancer 对用户进行身份验证。

为发现文档的更改做好准备

该openid-configuration文档是一份标准的 OpenID Connect 发现文档。随着时间的推移,Amazon Cognito 可以向其添加元数据条目,以使其符合 OpenID Connect 和 OAuth 2.0 规范,并提高与 OIDC 客户端库的兼容性。这些新增内容是向后兼容的:Amazon Cognito 会添加新成员,但它不会重命名、更改其类型或删除您的应用程序已读取的成员。编写您的客户端,使其随着文档的增长而继续运行。

忽略你不认识的成员

按照 OpenID Connect Discovery 规范的要求,将你不理解的元数据成员视为可选成员。当文档包含您的应用程序未使用的成员时,请勿拒绝、失败或抛出错误。

不要对成员集合或顺序进行硬编码

将文档解析为通用 JSON 对象,而不是固定结构。成员可以按任意顺序出现,并且成员集可以在请求之间以及随着时间的推移而发生变化。按名称为每个成员命名,并将每个成员读作规范为其定义的类型。

根据当前文档测试严格的客户端

如果您的客户端严格验证发现文档,请从用户池的/.well-known/openid-configuration端点获取当前文档,并在依赖特定成员集之前确认您的客户端接受该文档。

Amazon Cognito 代币遵循相同的加法、向前兼容的方法。有关解析 ID 或访问令牌中的声明的更多信息,请参阅安全地解析用户池令牌。