首页 > 基础资料 博客日记
Keycloak~infinispan中MergedUpdate中lifespanMs和maxIdleTimeMs
2026-01-15 16:00:02基础资料围观3次
在 Keycloak 中,MergedUpdate 类里的 lifespanMs 和 maxIdleTimeMs 是与 Infinispan 分布式缓存会话管理密切相关的两个核心参数。它们共同决定了用户会话在缓存中的存活时间。
下面的表格能帮你快速把握它们的核心区别:
| 参数 | 含义 | 对应 Keycloak 配置举例 | 过期触发条件 |
|---|---|---|---|
lifespanMs |
会话的绝对最大存活时间 | SSO Session Max |
从会话创建开始计时,无论是否活跃,到期即过期。 |
maxIdleTimeMs |
会话的最大空闲时间 | SSO Session Idle |
从最后一次访问会话开始计时,如果持续空闲超过设定时间则过期。 |
💡 参数详解与应用
-
lifespanMs(生存时间):这个参数为会话设置了一个“最终期限”。例如,如果SSO Session Max设置为 8 小时,那么即使用户一直在活动,8小时后该会话也会强制失效,用户需要重新登录。这为会话提供了一个硬性的安全上限。 -
maxIdleTimeMs(最大空闲时间):这个参数关注的是会话的活跃度。例如,如果SSO Session Idle设置为 30 分钟,那么用户如果在 30 分钟内没有任何操作(如访问受保护的页面),会话就会因空闲而过期。这有助于及时释放不活跃会话占用的资源。

Keycloak 在创建或更新一个用户会话对象(如 UserSessionEntity)时,会根据你在 Realm 设置中配置的 SSO Session Max 和 SSO Session Idle 值,计算出对应的 lifespanMs 和 maxIdleTimeMs,并将它们作为元数据设置到 Infinispan 缓存条目中。此后,Infinispan 会负责在后台自动清理过期的会话条目。
下面日志是用户登录后,写入sessions和clientSessions缓存的信息,包含它们的过期时间
- sessions
- sso session max (Lifespan)
- sso session idle (MaxIdle)
- clientSessions
- client session max (Lifespan)
- client session idle (MaxIdle)
15:50:34,725 INFO [org.keycloak.models.sessions.infinispan.changes.InfinispanChangelogBasedTransaction]
(default task-8) Add_if_absent successfully called for entity '8832559e-f1f8-4b22-9878-9dd47a01951c' to
the cache 'sessions' . Lifespan: 600000 ms, MaxIdle: 480000 ms
15:50:34,728 INFO [org.keycloak.models.sessions.infinispan.changes.InfinispanChangelogBasedTransaction]
(default task-8) Add_if_absent successfully called for entity '0c836594-c06d-4968-b5ca-ab6be6e91d4f' to
the cache 'clientSessions' . Lifespan: 1800000 ms, MaxIdle: 780000 ms
🔍 后台查看与管理
关于你提到的能否在 Keycloak 管理后台查看具体时间:
-
查看配置:你可以在 Keycloak 管理控制台的 Realm 设置中直接找到并修改
SSO Session Max和SSO Session Idle的全局默认值。这些配置值就是lifespanMs和maxIdleTimeMs的计算依据。- 路径通常是:管理控制台 -> 选择你的 Realm -> Realm 设置 -> 令牌 或 会话 标签页。
-
查看活跃会话:Keycloak 管理后台提供了查看当前活跃会话的功能。
- 路径通常是:管理控制台 -> 选择你的 Realm -> 会话 菜单。
在这里你可以看到当前活跃的用户会话列表。虽然这个界面通常不会直接显示每个会话精确到毫秒的剩余lifespanMs和maxIdleTimeMs,但它会展示会话的创建时间或最后活动时间。你可以结合 Realm 的全局会话超时设置,来估算会话的有效期。
- 路径通常是:管理控制台 -> 选择你的 Realm -> 会话 菜单。
-
关键限制:需要明确的是,管理后台无法直接、实时地显示每个会话在 Infinispan 缓存条目级别设置的
lifespanMs和maxIdleTimeMs的具体数值。这些是底层缓存的内部元数据,主要用于 Infinispan 自身的过期清理机制,并不在管理界面暴露。
💎 简单来说
lifespanMs 和 maxIdleTimeMs 是 Keycloak 实现会话自动过期的核心机制。它们的值由你在管理界面上设置的 SSO Session Max 和 SSO Session Idle 决定,并最终由 Infinispan 缓存可靠地执行。虽然无法在后台直接看到每个会话的这两个毫秒值,但你可以通过 Realm 设置和会话列表来管理和监控会话的生命周期。
希望这个解释能帮助你更好地理解 Keycloak 的会话过期机制。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
上一篇:vivo 微服务架构实践之 Dubbo 性能优化
下一篇:没有了

