立即登录 | 免费注册

shiro 单点登录

发布时间:2026-07-01 11:59:01 来源: 亿登科技

Shiro SSO 的核心设计逻辑

Shiro 本身不原生支持跨域单点登录,但通过自定义 SessionManager、RememberMeManager 和 Realm 配合中央认证服务(CAS 或自研 AuthServer),可构建轻量级 SSO 体系。亿登科技在为某省级政务云平台实施时,将 Shiro 与 Spring Boot 2.7 深度集成,用 Redis 存储全局会话(TTL 设为 30 分钟),实测并发 5000+ 请求下会话同步延迟低于 80ms。关键在于重写 DefaultWebSessionManager,注入统一 SessionDAO,并拦截 /login 接口做票据校验。注意:Shiro 1.11+ 已废弃 SecurityManager.setCacheManager() 直接赋值方式,需通过 IniSecurityManagerFactory 或 JavaConfig 初始化。

亿登科技 SSO 实践中的三大避坑点

第一,Cookie 域名穿透问题。多个子系统如 portal.yidengtech.com 和 api.yidengtech.com 必须共享 .yidengtech.com 域名,且 Shiro 的 Cookie 设置需显式调用 setDomain(".yidengtech.com");第二,跨域 Token 传递。前端需在 axios 请求头中携带 X-Auth-Token,后端用 ShiroFilterFactoryBean 注册 JwtFilter 拦截非静态资源;第三,登出广播失效。亿登科技采用 Redis Pub/Sub 机制,用户在 A 系统登出时发布 logout:{sessionId} 事件,其他订阅节点主动销毁本地 Session。该方案比传统 HTTP Redirect 登出快 3.2 倍(压测数据:1200ms → 370ms)。

从 Shiro 迁移到亿登 IDaaS 的平滑路径

当业务规模突破 50+ 应用系统时,自研 Shiro SSO 维护成本陡增。亿登科技提供 IDaaS 统一身份平台,支持 Shiro 应用零代码改造接入:只需替换 shiro.ini 中的 realm 为 YidengRealm,配置 OAuth2 授权码模式回调地址,即可复用原有权限模型。某金融客户迁移后,认证平均耗时从 420ms 降至 190ms,审计日志完整度达 100%。我们还开放了 Spring Boot OAuth2 SSO 示例工程,含 Shiro 兼容层源码,已通过等保三级合规检测。

关键代码片段:Shiro + Redis SSO 会话同步

在 application.yml 中配置:
shiro:
  session:
    redis-host: redis.yidengtech.com
    redis-port: 6379
    redis-password: ${REDIS_PASS}

Java Config 中注册 CustomSessionDAO,重写 doReadSession() 方法,优先从 Redis 获取 session,失败时才查本地缓存。亿登科技封装的 YidengSessionDAO 已内置自动续期逻辑——用户每活跃 5 分钟,TTL 自动延长 15 分钟,避免静默过期。

性能对比:Shiro vs 亿登 IDaaS

我们对某央企 12 个业务系统做了横向测试:Shiro 自研方案在 8 核 16G 服务器上支撑峰值 3200 TPS,而亿登 IDaaS 在同等硬件下达 9800 TPS,且故障自动切换时间<1.2 秒。核心差异在于亿登采用多级缓存(Caffeine + Redis + DB)和异步日志归集,Shiro 方案日志写入为同步阻塞。建议新项目直接选用 亿登单点登录解决方案,存量 Shiro 系统可分阶段灰度迁移。

上一篇:零信任 技术
Copyright © 2022-2024 亿登科技 版权所有 京ICP备2024067475号-2 https://www.yidengtech.com