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

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

使用 SP 启动的登录 SAML

最佳做法是实现 service-provider-initiated (由 SP 发起的)用户池登录。Amazon Cognito 会启动您的用户的会话并将他们重定向到您的 IdP。使用这种方法,您可以最大限度地控制谁提出登录请求。在某些条件下,您也可以允许 IDP 发起的登录。有关更多信息,请参阅 SAML在 Amazon Cognito 用户池中启动会话

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

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

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

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

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

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

    注意

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

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

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

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

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

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