You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Quarkus的Keycloak新版本如何处理用户会话?

Keycloak 18.0.0 版本用户会话处理逻辑说明

你观察到的SSO_TOKEN表不再写入会话记录是版本迭代后的正常设计变更,不是配置问题,核心逻辑变化如下:

  • 旧版(16及更早基于WildFly的版本)确实会将所有用户会话数据持久化到SSO_TOKEN表中,每次会话校验都需要读取数据库数据,大流量场景下数据库压力很高。
  • 从17版本切换到Quarkus架构后,Keycloak重构了整个会话存储层,默认采用缓存优先的两层存储架构,没有沿用旧的SSO_TOKEN表:
    • 活跃在线会话默认全部存储在内置Infinispan分布式缓存的内存中,不会主动持久化到关系型数据库。单节点部署下服务重启后所有在线会话会直接失效,集群部署下靠缓存节点间的同步机制保证会话跨节点可用,这也是你在数据库中找不到对应会话记录的核心原因。
    • 只有两类会话相关数据默认会持久化到数据库:
      • 离线用户会话、离线令牌:对应表为OFFLINE_USER_SESSION、OFFLINE_CLIENT_SESSION,逻辑和旧版基本一致
      • 持久化开关开启后的在线会话:如果你需要和旧版一样把在线会话落盘避免重启丢会话,可以在启动参数中添加--spi-sessions-infinispan-persistent-sessions=true,开启后在线会话会持久化到USER_SESSION、CLIENT_SESSION两张新表中,完全替代旧版SSO_TOKEN表的作用。

补充说明:从旧版本升级到18.0.0时,官方升级脚本只会自动迁移SSO_TOKEN表中存储的离线会话数据到新表,存量在线会话不会做迁移,升级完成后所有在线用户需要重新登录,属于预期内的行为。

内容的提问来源于stack exchange,提问作者Avishka Perera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 22:54:17