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

SAML 用户池 IdP 身份验证流程

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

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

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

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

  3. 您的用户将重新导向到身份提供商(IdP)。

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

  5. IdP 以 POST 方式将 SAML 断言发送到 Amazon Cognito 服务。

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

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


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

5 分钟内未完成的请求将被取消,并重新导向至登录页面。托管 UI 会显示 Something went wrong 错误消息作为响应。

当用户进行身份验证后,用户池将返回 ID、访问权限和刷新令牌。ID 令牌是用于身份管理的标准 OIDC 令牌,而访问令牌是标准 OAuth 2.0 令牌。ID 和访问令牌将在一小时后过期。您的应用程序可使用刷新令牌来获取新令牌,而无需让用户重新进行身份验证。

作为开发人员,您可以选择刷新令牌的到期时间,从而更改用户需要重新进行身份验证的频率。如果作为联合身份用户的用户已通过外部 IdP 进行身份验证,则应用程序会将 Amazon Cognito 令牌与刷新令牌结合使用来决定用户重新进行身份验证之前经过的时间,而无论外部 IdP 的令牌何时到期。当 ID 和访问令牌过期后,用户池将自动使用刷新令牌来获取新的 ID 和访问令牌。如果刷新令牌也已过期,则服务器将通过由 Amazon 托管的应用程序中的页面来自动启动身份验证。