Amazon Cognito 中的注销端点和 GlobalSignOut API 有什么区别?
上次更新日期:2023 年 1 月 27 日
我想了解如何在 Amazon Cognito 中使用注销端点和 GlobalSignOut API。
简短描述
Amazon Cognito 注销端点会清除浏览器中的用户会话。GlobalSignOut API 使发放给特定用户的所有访问和刷新令牌失效。
解决方法
使用注销端点注销用户
在您使用托管端点进行用户身份验证时,Amazon Cognito 会在您的浏览器中存储一个名为“cognito”的 Cookie。该 Cookie 与使用您用户群体配置的 Amazon Cognito 域关联。该 Cookie 的有效期为 1 小时。在用户在活动会话期间尝试再次登录时,Amazon Cognito 会询问用户是否要继续其现有会话。这允许用户在不提供凭证的情况下登录。如果用户选择以 example_username 身份登录按钮来使用现有会话,则 Cookie 的有效期将重置为 1 小时。
当用户在其浏览器中访问注销端点时,Amazon Cognito 会清除会话 Cookie。用户必须提供凭证才能再次登录。
在用户使用第三方身份提供者(IdP)登录时,需要执行额外的步骤。如果用户使用某个第三方 IdP 登录,则访问注销端点会清除浏览器中的“cognito”Cookie。但是,IdP 仍能保留活动会话。在清除用户的 IdP 会话时,请考虑以下信息:
- Amazon Cognito 支持带有 HTTP POST 绑定的安全断言标记语言版本 2.0(SAML 2.0)IdP 的单点注销(SLO)功能。如果您的提供者在其 SLO 端点上接受 HTTP POST 绑定,则可以考虑为 SAML IdP 实施 SLO。如果用户在启用 SLO 后访问注销端点,则 Amazon Cognito 会向 SAML IdP 发送已签名的注销请求。然后,SAML IdP 会清除 IdP 会话。
- 对于社交和 OpenID Connect(OIDC)IdP,必须创建自定义工作流才能清除浏览器中的 IdP 会话。
使用 GlobalSignOut API 注销用户
在使用 GlobalSignOut API 时,Amazon Cognito 会撤销发放给用户的所有访问和刷新令牌。请注意,只有 Amazon Cognito 会收到令牌撤销通知。您的应用程序可能会继续接受这些令牌,直到它们过期。
您的应用程序可以同时使用 GlobalSignOut 和 AdminUserGlobalSignOut API 实现全局注销用户。在应用程序使用 REST API 进行 Amazon Cognito 用户身份验证时,您必须使用这些 API 注销用户。
在应用程序尝试使用已撤销的令牌时,会引发 Amazon Cognito 错误,说明您已撤销刷新令牌。用户必须再次登录才能获得一组新的 JSON Web 令牌(JWT)。
您可以在用户群体应用程序客户端中配置访问和 ID 令牌的过期时间。您可以将过期时间更改为 5 分钟到 24 小时之间的值。