我正在尝试使用 keycloak 和 openid 在我的 spring boot 应用程序中实现单一注销。
我已经使用 sprint boot 1.5.3 和 spring 安全适配器(文档 here)设置了 keycloak 3.4.3,使用 tomcat 适配器(文档 here)算法。一切正常,直到我尝试从我的所有 session 中注销。
我试过:
1) 在 keycloak 管理控制台 ui 上:注销所有 session 结果:它确实清除了 keycloak 中的所有 session ,但没有清除我的客户端应用程序中的浏览器 session 。所以我一直登录,直到我手动删除它们。
2) 使用HttpServletRequest.logout()
和http://auth-server/auth/realms/{realm-name}/protocol/openid-connect/logout?redirect_uri= encodedRedirectUri
(文档 here ),仅从当前客户端注销而不作为 SLO
我不确定 OpenID 是否支持 SLO,而且我找不到任何关于它的可靠文档。
¿有没有办法使用 OpenID 和 Spring boot 实现单点注销?
最佳答案
您可以执行以下操作来注销
@GetMapping(path = "/logout")
public String logout(HttpServletRequest request) throws ServletException {
request.logout();
return "/";
}
http
<a href="/logout">Logout</a>
关于spring-boot - keycloak openid single log out with spring boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50537584/