← 返回信息流
AI 资讯Hacker News·2 天前

Apache Shiro安全框架发布3.0.0版本

原标题:Apache Shiro security framework releases 3.0.0

速览

Apache Shiro是一个流行的Java安全框架,3.0.0版本是重大更新,重构了核心架构,改进了会话管理和密码加密功能,并修复了多个安全漏洞。此次升级对使用该框架的应用安全有重要影响。

AI 深度解读

背景

Apache Shiro 是一个广泛使用的 Java 安全框架,提供认证、授权、加密和会话管理等功能。2025 年,Apache Shiro 团队正式发布了 3.0.0 版本,这是该框架自 1.x 和 2.x 系列以来的首个重大版本升级。该版本历时超过两年的开发,带来了大量新特性和改进,同时标志着对旧版(1.x 和 2.x)的正式终止支持。

核心内容

Apache Shiro 3.0.0 是一个全新的主要版本,现已开放下载。以下是本次发布的核心变更:

  • 最低 JDK 版本提升至 JDK 17:不再支持更旧的 JDK 版本。
  • 全面采用 Jakarta EE 命名空间:支持 Jakarta EE 9、10、11 及以上版本,彻底移除了 javax.* 命名空间(这是 Java EE 到 Jakarta EE 迁移的关键一步)。
  • 框架集成升级:支持 Spring 6/7+ 和 Spring Boot 3/4+,以及 Guice 7/8+。
  • 利用 Java Scoped Values 替代 ThreadLocals:在 JDK 25+ 环境下,Subject 和 SecurityManager 的实现改用 Java 的 Scoped Values,以获得更好的性能与并发安全性。
  • 改进 Shiro 原生会话的线程安全性:对 SimpleSessionSimpleSessionFactoryCachingSessionDAO 等类进行了线程安全优化。
  • 默认实现 PrincipalCollection 变为不可变ImmutablePrincipalCollection 成为默认实现,增强安全性。
  • 默认启用不区分大小写的路径匹配:这使框架默认行为更加严格和安全。
  • 新增 NoAccessFilter:并将其加入默认过滤器链。这是一个破坏性变更,旨在强化默认安全配置。
  • 默认启用 CORS 预检请求:提升与现代 Web 前端的兼容性。

此外,官方明确宣布 Apache Shiro 1.x 和 2.x 现已终止生命周期(End-of-Life)。如果需要对这些旧版本的支持,需寻求商业支持渠道。

更多信息可访问 GitHub(Release 3.0.0)和官方下载页面。

关键要点

  • 最低要求 JDK 17,不再支持旧版 JDK。
  • 完全从 javax.* 迁移到 jakarta.* 命名空间,兼容 Jakarta EE 9/10/11+。
  • 更新了对 Spring、Spring Boot、Guice 等主流框架的集成版本。
  • 在 JDK 25+ 上使用 Java Scoped Values 替代 ThreadLocals,提升性能和安全。
  • 改进了原生会话(SimpleSession 等)的线程安全性。
  • 默认使用不可变的 PrincipalCollection,减少意外修改风险。
  • 默认启用不区分大小写的路径匹配,并新增 NoAccessFilter 加入默认过滤器链——两者均为默认安全强化。
  • 默认启用 CORS 预检请求。
  • 1.x 和 2.x 版本正式停止支持,不再有官方补丁。

意义与影响

Apache Shiro 3.0.0 的发布标志着该框架进入现代化阶段。通过提升基线至 JDK 17 并全面转向 Jakarta EE,它能够更好地适配当前 Java 生态的主流版本。默认安全性的加强(如不可变 PrincipalCollection、不区分大小写路径、NoAccessFilter、CORS 预检)减少了因配置疏漏导致的安全风险,体现了“安全默认”的设计原则。对 JDK 25+ 上 Scoped Values 的支持,则是对 Java 未来并发模型的前瞻性对齐。

对于仍在使用 Shiro 1.x/2.x 的团队,本次发布意味着必须规划迁移到 3.x 或寻求商业支持。整个 Java 安全框架社区也将因这些改进而获得更健壮、更易用的选择。总体而言,这是一个兼具向后兼容性破坏与长期收益的重要版本更新。

查看原文 →shiro.apache.org