首页 > 解决方案 > 单次注销问题

问题描述

我将 keycloak 与我的 Spring Boot 应用程序集成。我有注销问题。现在我正在使用

POST http://localhost:8080/auth/realms/ /protocol/openid-connect/logout

授权:Bearer Content-Type:application/x-www-form-urlencoded

问题是此注销 API 允许从一台设备注销。让我们考虑一下,如果我从多个设备登录并从一个设备注销,那么我的另一个设备应用程序仍然登录。有什么方法可以让我的应用程序单次注销,所以如果我从一个设备注销我的帐户从所有设备注销.

标签: spring-bootkeycloak

解决方案


查看您的问题(到目前为止没有代码示例)我假设您“确实”允许从不同设备进行多次登录。并且可能您正在寻找更合乎道德的答案。在这种情况下,您的解决方案应该基于令牌状态。

一般来说,您不能根据 KeyCloack 级别一次神奇地注销所有设备。例如,如果您从不同的设备登录 gmail,则在注销操作时,您不会退出所有设备,除非您明确控制应用程序指令logout from all devices

您将需要在您的应用程序中检查令牌状态,这将确定您是否具有有效的令牌状态(可能是您的 SAML 响应中的附加 SAML 属性)。您可以将 POST 请求区分为logoutlogoutAll

但是,由于您拥有第三方身份提供者 - KeyCloack,因此您仍然会在其他设备中获得陈旧的应用程序状态。logoutAll直到您执行一些尝试验证您的令牌并失败的操作,因此根据请求将您注销。


推荐阅读