第 3 周实验指南:全局会话管理 (TGT)
第 3 周实验指南:全局会话管理 (TGT) 1. 学习目标 本周,我们将实现单点登录的核心:由票据授予票据(TGT)代表的全局会话。完成本次实验后,你将能够: 理解 TGT 在 SSO 系统中的作用。 实现 TGT 的创建、检索和移除。 使用带有生存时间(TTL)的缓存实现会话过期。 为会话实现滑动窗口过期策略。 限制每个用户的并发会话数量。 2. 理论背景 2.1 什么是票据授予票据 (TGT)? TGT 是进入 SSO 王国的主钥匙。用户首次登录后,SSO 服务器会创建一个 TGT 并存储它,将其与用户身份关联。然后,服务器在用户的浏览器中设置一个包含 TGT ID 的 Cookie。 当用户访问另一个应用时,他们的浏览器会将此 TGT Cookie 发送到 SSO 服务器。服务器验证 TGT 以确认用户拥有活动会话,如果验证通过,则为新应用颁发访问令牌,而无需再次请求用户登录。这就是单点登录的精髓。 2.2 会话管理策略 生存时间 (TTL):会话不应永久有效。我们定义一个超时时间(例如 30 分钟),非活动会话在此之后自动过期。 滑动窗口过期:为了改善用户体验,我们可以在用户活动时刷新会话的过期时间。如果用户执行操作,他们 30 分钟的会话计时器将重置。这可以防止他们在仍在使用应用时被登出。 并发会话限制:出于安全和资源管理的考虑,我们可能希望限制一个用户可以同时登录的设备数量(例如,最多 5 个活动会话)。 3. 实验任务 导航到 smart-sso-starter-server 模块中的 LocalTicketGrantingTicketManager.java 文件。你将在这里使用缓存实现管理 TGT 的逻辑。 任务 1:初始化缓存 在构造函数中,你需要使用 Guava 的 CacheBuilder 初始化两个缓存: ...