本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
SAML 用户池 SP 发起的登录流程
以下过程显示了用户如何通过 SAML 提供商登录您的用户池。
-
您的用户在登录页面输入他们的电子邮件地址。要确定您的用户是否重定向到其 IdP,您可以在定制化应用程序中收集他们的电子邮件地址,或者在 Web 视图中调用托管 UI。您可以将托管 UI 配置为显示电子邮件地址列表 IdPs 或仅提示输入电子邮件地址。
-
您的应用程序调用您的用户池重定向端点,并请求使用与应用程序对应的客户端 ID 和与用户对应的 IdP ID 进行会话。
-
Amazon Cognito 使用元素中的 SAML 请求(可选签名)将您的用户重定向到 IdP。
AuthnRequest
-
IdP 以交互方式或通过浏览器 cookie 中记住的会话对用户进行身份验证。
-
IdP 将您的用户重定向到您的用户池 SAML 响应端点,并在其 POST 有效负载中包含可选加密的 SAML 断言。
注意
Amazon Cognito 会取消在 5 分钟内未收到响应的会话,并将用户重定向到托管用户界面。当您的用户遇到此结果时,他们会收到一条
Something went wrong
错误消息。 -
在验证 SAML 断言并映射响应中声明中的用户属性后,Amazon Cognito 会在内部创建或更新用户池中的用户个人资料。通常,您的用户池会向用户的浏览器会话返回授权码。
-
您的用户向您的应用程序出示他们的授权码,您的应用程序会将该代码兑换 JSON 网络令牌 (JWT)。
-
您的应用程序接受并处理用户的 ID 令牌作为身份验证,使用其访问令牌生成对资源的授权请求,并存储他们的刷新令牌。
当用户进行身份验证并收到授权码授予时,用户池会返回 ID、访问和刷新令牌。ID 令牌是基于 OIDC 的身份管理的身份验证对象。访问令牌是具有 OAuth 2.0 范围
您也可以选择刷新令牌的持续时间。用户的刷新令牌到期后,他们必须重新登录。如果他们通过 SAML IdP 进行身份验证,则您的用户的会话持续时间由其令牌到期而不是他们与 IdP 的会话到期时间来设置。您的应用程序必须存储每位用户的刷新令牌,并在刷新令牌到期时续订他们的会话。托管用户界面在有效期为 1 小时的浏览器 Cookie 中维护用户会话。