本文档旨在讲解 JumpServer 中控制用户会话(Session)过期行为的核心参数,并结合常见安全参数,说明其适用场景并提供配置建议,以帮助您构建既安全又用户友好的认证系统。
一、核心配置参数详解
调整配置
vi /opt/jumpserver/config/config.txt #编辑该参数文件,修改如下参数,如果没有,则手动添加
SESSION_COOKIE_AGE=86400 # 具体时间可根据需求调整,这个单位是s,默认是一天
SESSION_EXPIRE_AT_BROWSER_CLOSE=false # 该参数为true时,关闭浏览器时, Session立即过期用户会话的有效期主要由以下两个参数协同控制:
SESSION_COOKIE_AGE含义: 用户会话的最大空闲有效期,单位为秒。此计时器在用户每次与服务器交互(发送请求)时都会重置。
工作机制: 从用户最后一次操作开始倒计时。如果超过设定时长用户没有任何操作,则其 Session 会自动过期,需要重新登录。
SESSION_EXPIRE_AT_BROWSER_CLOSE含义: 控制会话是否为浏览器会话级。
类型: 布尔值 (Boolean),可选
True或False。工作机制:
False(默认):Session 有效期由SESSION_COOKIE_AGE控制。即使用户关闭浏览器再重新打开,只要未超时,仍保持登录状态。True:Session Cookie 将被标记为“浏览器会话 Cookie”。当用户完全关闭浏览器应用程序(而非仅关闭标签页)时,Session 立即过期,需要重新登录。注意:此设置会覆盖SESSION_COOKIE_AGE。只要浏览器不关闭,会话会一直通过用户活动保持,但关闭浏览器则强制过期。
二、配合使用场景分析
以下结合不同的配置组合,说明其适用的典型业务场景:
组合 1: 高安全性要求场景
配置:
SESSION_COOKIE_AGE = 1800(例如 30 分钟)SESSION_EXPIRE_AT_BROWSER_CLOSE = True
行为: 用户会话将在 两种情况下过期:
用户持续操作但空闲时间超过 30 分钟。
用户主动关闭整个浏览器。
场景: 此配置提供了双重保险,非常适合处理敏感数据或操作的系统。它确保了即使用户忘记注销,在短时间空闲或关闭浏览器后,会话也会自动终止,极大降低了账户在他人设备上被误用的风险。
组合 2: 用户体验优先场景
配置:
SESSION_COOKIE_AGE = 1209600(2周,或更长)SESSION_EXPIRE_AT_BROWSER_CLOSE = False
行为: 用户会话仅在空闲时间超过 2 周后过期。关闭浏览器再打开无需重新登录(“记住我”效果)。
场景: 为普通用户提供极大的便利,减少重复登录的烦恼,提升用户体验和粘性。适用于不涉及敏感信息的公众网站。
组合 3: 平衡安全与便利的场景
配置:
SESSION_COOKIE_AGE = 43200(例如 12 小时)SESSION_EXPIRE_AT_BROWSER_CLOSE = False
行为: 用户在一个工作日内保持登录状态,但长时间不操作(如过夜)后需要重新登录。关闭浏览器不会导致登录状态丢失。
场景: 兼顾了安全性和办公效率。用户不需要在一天内反复登录,但又避免了会话无限期保持的风险。是许多内部系统的折中方案。
总结:
SESSION_EXPIRE_AT_BROWSER_CLOSE = True是重要的安全特性,建议启用。SESSION_COOKIE_AGE的值应根据您业务对“空闲”的定义来设定(如 1小时、8小时、1天)。
用户可以根据自己应用的具体安全等级要求和用户使用习惯,在上述建议的基础上进行微调。
注: 需要重启服务使配置生效
jmsctl restart