You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring中保存历史认证:Service-Y不可用时已认证用户登录Service-X方案

应对SSO服务不可用时的本地登录方案

刚好之前做过类似的内部SSO高可用架构,针对你说的「用户已在Service-X完成过认证,当Service-Y不可用时仍能登录」的需求,分享几个可行的方案:

1. 本地缓存加密会话令牌

当用户首次通过Service-Y完成SSO登录后,Service-X可以生成一个加密的、带有效期的本地会话令牌,和用户的身份ID、权限信息绑定后存储(可以存在Cookie或后端Redis里)。

  • 当检测到Service-Y不可用时,Service-X直接校验本地令牌:如果令牌未过期且签名合法,就直接放行登录,不需要再调用SSO接口。
  • 注意点:令牌必须用对称加密(比如AES)或非对称签名(比如RSA)保证不可篡改,有效期建议设得比SSO会话短(比如24小时),同时提供手动注销按钮,让用户能主动失效本地会话。

2. 隐藏式应急登录入口(仅限内部场景)

提前在Service-X里做一个隐藏的应急登录页面,只对公司内部IP段开放,或者需要额外验证:

  • 可以让用户在Service-Y正常时,提前设置一个应急登录密码,加密存储在Service-X的本地数据库里;或者由管理员批量生成临时凭证分发给员工。
  • 当SSO挂了,用户可以通过这个入口输入工号+应急密码登录,Service-X直接校验本地存储的凭证。
  • 注意点:这个入口一定要做严格的访问控制,比如限制内部IP、加验证码,防止外部攻击;并且在Service-Y恢复后,自动禁用这个入口,强制切回SSO认证。

3. 会话持久化+自动降级策略

如果Service-X用的是分布式会话(比如Redis集群),可以在用户SSO登录成功后,把用户的核心身份信息(用户ID、角色、过期时间)持久化到本地会话中:

  • 后台加一个Service-Y的健康检查脚本,定时探测SSO接口的可用性。一旦检测到不可用,自动切换到降级模式,直接读取本地会话的用户信息做鉴权。
  • 等Service-Y恢复后,自动切回正常流程,并且强制用户重新走SSO认证,更新本地会话信息。

4. 预缓存用户基础身份信息

在Service-Y可用时,要么定期同步所有员工的基础信息(工号、部门、权限)到Service-X的本地缓存,要么在用户每次登录时,预取并缓存这些信息:

  • 当SSO不可用时,结合本地的会话令牌,直接用缓存的用户信息完成登录和权限校验。
  • 注意点:缓存的信息要设置合理的过期时间,并且在Service-Y恢复后立即触发同步,避免用户信息不一致。

额外提醒

  • 所有本地存储的凭证、用户信息都必须加密存储,防止数据泄露。
  • 降级模式下的所有登录操作都要详细打日志,方便后续审计排查。
  • 一定要提前做故障演练,模拟Service-Y不可用的场景,确保降级流程能正常跑通。

内容的提问来源于stack exchange,提问作者e1sordo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:24:31