spring-boot - 单次注销问题
问题描述
我将 keycloak 与我的 Spring Boot 应用程序集成。我有注销问题。现在我正在使用
POST http://localhost:8080/auth/realms/ /protocol/openid-connect/logout
授权:Bearer Content-Type:application/x-www-form-urlencoded
问题是此注销 API 允许从一台设备注销。让我们考虑一下,如果我从多个设备登录并从一个设备注销,那么我的另一个设备应用程序仍然登录。有什么方法可以让我的应用程序单次注销,所以如果我从一个设备注销我的帐户从所有设备注销.
解决方案
查看您的问题(到目前为止没有代码示例)我假设您“确实”允许从不同设备进行多次登录。并且可能您正在寻找更合乎道德的答案。在这种情况下,您的解决方案应该基于令牌状态。
一般来说,您不能根据 KeyCloack 级别一次神奇地注销所有设备。例如,如果您从不同的设备登录 gmail,则在注销操作时,您不会退出所有设备,除非您明确控制应用程序指令logout from all devices
。
您将需要在您的应用程序中检查令牌状态,这将确定您是否具有有效的令牌状态(可能是您的 SAML 响应中的附加 SAML 属性)。您可以将 POST 请求区分为logout
和logoutAll
。
但是,由于您拥有第三方身份提供者 - KeyCloack,因此您仍然会在其他设备中获得陈旧的应用程序状态。logoutAll
直到您执行一些尝试验证您的令牌并失败的操作,因此根据请求将您注销。
推荐阅读
- php - Laravel - 从数据库中获取 3 列并以 SELECT 形式打印的方法
- python - Python代码从列表中删除部分单词
- c - UART通信 SMT32L496ZG
- sql - 从多个列/表中选择数据并将其插入到视图中的一列中
- c++ - 派生的获取/设置方法
- javascript - jQuery .load() 全局应用注入的 HTML 页面的 CSS。有没有办法避免这种行为?
- java - 如何确定运行 java 应用程序的帐户是否为“SYSTEM”
- r - 使用 shinycustomloader 的 withLoader() 动态创建加载消息
- keras - 如何解决tensorflow 2.2.0中的CNN模型拟合问题?
- java - 无法将码头 websocket maxIdleTimeout 设置为 60 秒以上