session - 如何让 Keycloak 注销未设置会话?
问题描述
我有一个配置,我使用 Keycloak 作为身份代理,以及一个自定义身份提供者(使用 Spring Security OAuth)来提供用户信息。
我观察到的是,当我尝试注销(使用前通道流)时,Keycloak cookie 包括KEYCLOAK_IDENTITY
保留。我希望看到Set-Cookie
标题将过期时间设置为过去的某个日期。
这意味着如果我随后转到受保护的端点/页面,我可以在不重新登录的情况下访问该资源。Keycloak 从KEYCLOAK_IDENTITY
cookie 中读取 IdToken 值并使用它来重新验证用户。
如何配置 Keycloak 以完全注销用户?
解决方案
解决方案隐藏在 Keycloak 源代码中:
- 如果我在身份提供者配置中指定注销 url,Keycloak 将不会取消设置自己的 cookie。参考资料:
OIDCIdentityProvider.keycloakInitiatedBrowserLogout()
。此方法需要返回 null 以便 Keycloak 取消设置其 cookie。
推荐阅读
- python - 如何为数组的子列表创建循环
- android - 如何在我的 Android 应用程序中打开任何 https 网址
- sql-server - 用于多个 excel 文件加载的 SQL Server 存储过程
- android-jetpack - 调用@Composable 函数的函数必须使用@Composable 注解进行标记
- java - Android Studio:图像占用空间但未在 ListView 中显示
- c++ - gdb 使用 stl-view 查看 stl 内容
- html - 想要删除图像和部分之间不需要的空间
- css - 在 sass 文件中导入 css cdn 并从中扩展类
- python - 监控和报告python程序
- scala - Slick中插入行的条件插入返回选项