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