Project 6 - 令牌撤销与单点登出
实验目标 恭喜你来到最后一个实验!本周我们将实现 OAuth 2.0 系统的收尾工作:令牌撤销和单点登出。完成本实验后,你将能够: ✅ 理解令牌撤销的重要性和应用场景 ✅ 实现符合 RFC 7009 的令牌撤销端点 ✅ 理解单点登出(Single Logout, SLO)的工作原理 ✅ 实现前端通道登出(Front-Channel Logout) ✅ 理解后端通道登出(Back-Channel Logout)的概念 ✅ 完成整个 OAuth 2.0 授权服务器的实现 实验任务 任务 1:完善令牌管理器的撤销逻辑 文件位置 smart-sso-server/src/main/java/com/smart/sso/server/token/LocalTokenManager.java 1.1 完善 remove 方法 @Override public void remove(String refreshToken) { // TODO 1: 获取令牌内容 // 提示:使用 refreshTokenCache.getIfPresent() 方法 // 思考:如果令牌不存在应该如何处理?(幂等性) // TODO 2: 从刷新令牌缓存中移除 // 提示:使用 refreshTokenCache.invalidate() 方法 // TODO 3: 移除关联的访问令牌 // 提示:从 TokenContent 中获取 accessToken // 注意:访问令牌可能为 null,需要判空 // TODO 4: 从 TGT 反向索引中移除 // 提示: // - 获取 TGT 和对应的令牌集合 // - 从集合中移除当前刷新令牌 // - 如果集合为空,清理整个 TGT 缓存条目 // - 否则更新缓存 // TODO 5: 记录日志 // 提示:记录刷新令牌和用户 ID(用于审计) } 设计提示: ...