SAML 用户池 SP 发起的登录流程 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

SAML 用户池 SP 发起的登录流程

以下过程显示了用户如何通过 SAML 提供商登录您的用户池。


                    亚马逊 Cognito SP 发起的 SAML 登录的身份验证流程图。
  1. 您的用户在登录页面输入他们的电子邮件地址。要确定您的用户是否重定向到其 IdP,您可以在定制化应用程序中收集他们的电子邮件地址,或者在 Web 视图中调用托管 UI。您可以将托管 UI 配置为显示电子邮件地址列表 IdPs 或仅提示输入电子邮件地址。

  2. 您的应用程序调用您的用户池重定向端点,并请求使用与应用程序对应的客户端 ID 和与用户对应的 IdP ID 进行会话。

  3. Amazon Cognito 使用元素中的 SAML 请求(可选签名)将您的用户重定向到 IdP。AuthnRequest

  4. IdP 以交互方式或通过浏览器 cookie 中记住的会话对用户进行身份验证。

  5. IdP 将您的用户重定向到您的用户池 SAML 响应端点,并在其 POST 有效负载中包含可选加密的 SAML 断言。

    注意

    Amazon Cognito 会取消在 5 分钟内未收到响应的会话,并将用户重定向到托管用户界面。当您的用户遇到此结果时,他们会收到一条Something went wrong错误消息。

  6. 在验证 SAML 断言并映射响应中声明中的用户属性后,Amazon Cognito 会在内部创建或更新用户池中的用户个人资料。通常,您的用户池会向用户的浏览器会话返回授权码。

  7. 您的用户向您的应用程序出示他们的授权码,您的应用程序会将该代码兑换 JSON 网络令牌 (JWT)。

  8. 您的应用程序接受并处理用户的 ID 令牌作为身份验证,使用其访问令牌生成对资源的授权请求,并存储他们的刷新令牌。

当用户进行身份验证并收到授权码授予时,用户池会返回 ID、访问和刷新令牌。ID 令牌是基于 OIDC 的身份管理的身份验证对象。访问令牌是具有 OAuth 2.0 范围的授权对象。刷新令牌是一个在用户当前令牌过期时生成新 ID 和访问令牌的对象。您可以在用户池应用程序客户端中配置用户令牌的持续时间。

您也可以选择刷新令牌的持续时间。用户的刷新令牌到期后,他们必须重新登录。如果他们通过 SAML IdP 进行身份验证,则您的用户的会话持续时间由其令牌到期而不是他们与 IdP 的会话到期时间来设置。您的应用程序必须存储每位用户的刷新令牌,并在刷新令牌到期时续订他们的会话。托管用户界面在有效期为 1 小时的浏览器 Cookie 中维护用户会话。