惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
The GitHub Blog
The GitHub Blog
美团技术团队
Know Your Adversary
Know Your Adversary
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The Register - Security
The Register - Security
Stack Overflow Blog
Stack Overflow Blog
Attack and Defense Labs
Attack and Defense Labs
G
Google Developers Blog
I
InfoQ
博客园 - 司徒正美
T
Troy Hunt's Blog
Google DeepMind News
Google DeepMind News
J
Java Code Geeks
MongoDB | Blog
MongoDB | Blog
博客园 - 聂微东
A
About on SuperTechFans
云风的 BLOG
云风的 BLOG
S
Security Affairs
M
MIT News - Artificial intelligence
Simon Willison's Weblog
Simon Willison's Weblog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Tailwind CSS Blog
量子位
Vercel News
Vercel News
月光博客
月光博客
V
Vulnerabilities – Threatpost
N
News and Events Feed by Topic
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
L
LangChain Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 最新话题
F
Full Disclosure
The Hacker News
The Hacker News
Hacker News: Ask HN
Hacker News: Ask HN
T
Tor Project blog
A
Arctic Wolf
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Forbes - Security
Forbes - Security
IT之家
IT之家
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Y
Y Combinator Blog
GbyAI
GbyAI
B
Blog RSS Feed
V
Visual Studio Blog
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs

博客园 - 张占岭

springboot~关于构造方法注入和字段注入的选择 apisix~OpenResty各阶段的介绍 keycloak~aud受众字段的作用及如何生成 wso2~关于workbuddy中mcp在wso2中的授权端点 k8s~避免调度资源碎片化 WEB安全~csrf介绍 WEB安全~DPoP的介绍 WEB安全~csp的介绍 什么是中间人攻击 WEB安全~xss的介绍 k8s~pod资源限制和JVM的XMX配置 关于对wso2和keycloak的token交换的调研 keycloak~实现OAuth 2.0 Token Exchange backstage~实体的介绍及它们的关系 backstage~openapi的接入与protobuf的对比 backstage~将java服务添加到backstage backstage~对接github和gitlab backstage~开始一个backstage应用 apisix~graphQL的支持 wso2几个核心项目介绍 docker~BuildKit的介绍 k8s~secret资源的使用 算法~时间戳计算两个日期是否为同天同时同分 wso2~4.5升级到4.6需要更新的数据表 backstage~Backstage的概述 springboot~jpa优雅的软删除能力 springboot~ImportBeanDefinitionRegistrar在自定义RPC框架中的使用 keycloak~深入了解DefaultSegmentedDataContainer对象解决内存泄漏 keycloak~分布式部署中会话过期清理机制 wso2~通过三方IDP的token置换wso2的token jmeter进行接口压测 wso2~添加mcp服务的注意点
Keycloak~infinispan中MergedUpdate中lifespanMs和maxIdleTimeMs
张占岭 · 2026-01-15 · via 博客园 - 张占岭

在 Keycloak 中,MergedUpdate 类里的 lifespanMsmaxIdleTimeMs 是与 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 MaxSSO Session Idle 值,计算出对应的 lifespanMsmaxIdleTimeMs,并将它们作为元数据设置到 Infinispan 缓存条目中。此后,Infinispan 会负责在后台自动清理过期的会话条目。

下面日志是用户登录后,写入sessions和clientSessions缓存的信息,包含它们的过期时间

  • sessions

    • Lifespan: max(sso session max & SSO Session Max Remember Me)这3个时间的最大值
    • MaxIdle: sso session idle (最小时间为300秒,5分钟,所以缓存中最小为5+3=8分钟)
  • clientSessions

    • Lifespan: client session max (最小时间为300秒,5分钟,所以缓存中最小为5+3=8分钟)
    • MaxIdle: client session idle
  • 当用户会话缓存sessions,它的Lifespan大于客户端clientSessions的Lifespan时,可能出现的情况就是,用户会话列表中显示的客户端为空

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 MaxSSO Session Idle 的全局默认值。这些配置值就是 lifespanMsmaxIdleTimeMs 的计算依据。

    • 路径通常是:管理控制台 -> 选择你的 Realm -> Realm 设置 -> 令牌会话 标签页。
  • 查看活跃会话:Keycloak 管理后台提供了查看当前活跃会话的功能。

    • 路径通常是:管理控制台 -> 选择你的 Realm -> 会话 菜单。
      在这里你可以看到当前活跃的用户会话列表。虽然这个界面通常不会直接显示每个会话精确到毫秒的剩余 lifespanMsmaxIdleTimeMs,但它会展示会话的创建时间或最后活动时间。你可以结合 Realm 的全局会话超时设置,来估算会话的有效期。
  • 关键限制:需要明确的是,管理后台无法直接、实时地显示每个会话在 Infinispan 缓存条目级别设置的 lifespanMsmaxIdleTimeMs 的具体数值。这些是底层缓存的内部元数据,主要用于 Infinispan 自身的过期清理机制,并不在管理界面暴露。

💎 简单来说

lifespanMsmaxIdleTimeMs 是 Keycloak 实现会话自动过期的核心机制。它们的值由你在管理界面上设置的 SSO Session MaxSSO Session Idle 决定,并最终由 Infinispan 缓存可靠地执行。虽然无法在后台直接看到每个会话的这两个毫秒值,但你可以通过 Realm 设置和会话列表来管理和监控会话的生命周期。

希望这个解释能帮助你更好地理解 Keycloak 的会话过期机制。