SAML 用户池 IdP 身份验证流程 - Amazon Cognito
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

SAML 用户池 IdP 身份验证流程

您可以直接从用户池集成基于 SAML 的 IdPs。

  1. 应用程序通过将用户定向到由 AWS 托管的 UI 来开始注册和登录过程。移动应用程序可以使用 Web 视图显示由 AWS 托管的页。

  2. 通常,您的用户池将通过用户的电子邮件地址确定用户的身份提供商。

    或者,如果您的应用程序在将用户定向到用户池之前已收集信息,它可以通过查询参数来向 Amazon Cognito 提供这些信息。

  3. 您的用户将重定向到身份提供商。

  4. 会在必要时对用户进行身份验证。IdP如果 IdP 发现用户具有活动会话,IdP 将跳过身份验证以提供单一登录 (SSO) 体验。

  5. SAML 断言的 IdP POSTs 到 Amazon Cognito 服务。

  6. 在验证 SAML 断言并收集断言中的用户属性(声明)后,Amazon Cognito 会在用户池中内部创建或更新用户配置文件。Amazon Cognito 将 OIDC 令牌返回到当前已登录用户的应用程序。

下图显示了此过程的身份验证流程:


                    将 SAML IdP 用于用户池的身份验证流程图。
注意

5 分钟内未完成的请求将被取消,并重定向至登录页面,然后会显示 Something went wrong 错误消息。

当用户进行身份验证后,用户池将返回 ID、访问权限和刷新令牌。ID 令牌是用于身份管理的标准 OIDC 令牌,而访问令牌是标准 OAuth 2.0 令牌。虽然 ID 和访问令牌将在 1 小时后过期,但应用程序可使用刷新令牌来获取新令牌,而无需让用户重新进行身份验证。作为开发人员,您可以选择刷新令牌的到期时间,从而设定用户需要重新进行身份验证的频率。如果用户已通过外部 IdP 进行身份验证(即,他们是联合身份用户),则您的应用程序仍会将 Amazon Cognito 令牌与刷新令牌结合使用,以确定用户重新进行身份验证之前经过的时间,无论外部 IdP 的令牌何时到期。当 ID 和访问令牌过期后,用户池将自动使用刷新令牌来获取新的 ID 和访问令牌。如果刷新令牌也已过期,则服务器将通过由 AWS 托管的应用程序中的页面来自动启动身份验证。