首页 > 解决方案 > 如何让 Keycloak 注销未设置会话?

问题描述

我有一个配置,我使用 Keycloak 作为身份代理,以及一个自定义身份提供者(使用 Spring Security OAuth)来提供用户信息。

我观察到的是,当我尝试注销(使用前通道流)时,Keycloak cookie 包括KEYCLOAK_IDENTITY保留。我希望看到Set-Cookie标题将过期时间设置为过去的某个日期。

这意味着如果我随后转到受保护的端点/页面,我可以在不重新登录的情况下访问该资源。Keycloak 从KEYCLOAK_IDENTITYcookie 中读取 IdToken 值并使用它来重新验证用户。

如何配置 Keycloak 以完全注销用户?

标签: sessioncookieslogoutkeycloak

解决方案


解决方案隐藏在 Keycloak 源代码中:

  • 如果我在身份提供者配置中指定注销 url,Keycloak 将不会取消设置自己的 cookie。参考资料:OIDCIdentityProvider.keycloakInitiatedBrowserLogout()。此方法需要返回 null 以便 Keycloak 取消设置其 cookie。

推荐阅读