Spring(Acegi)Security 2.0 增加 OpenID 支持、REST 能力及性能改进

  • Dionysios G. synodinos
  • 张龙

2008 年 4 月 30 日

话题:JavaWeb框架安全语言 & 开发架构

SpringSource的总裁和 CEO Rod Johnson宣布了 Spring Security2.0.0 的发布,该版本将Acegi Security作为Spring 应用的官方安全模块。如 InfoQ 早前报道,Acegi security 已经成为企业软件中应用最为广泛的 Java 安全框架之一,它提供了全面的认证、授权、基于实例的访问控制、channel 安全及人类用户检验能力:

Acegi Security 开始于 2003 年底,其起因源于 Spring 开发者邮件列表上的一个问题:基于 Spring 的安全实现是否在计划中呢?从那时起,Acegi 就成为为数不多的 Java 安全框架之一,毫无疑问,也是应用最为广泛的一个。Servlet 和 EJB 安全标准的不健全及灵活性差的原因导致人们对 Acegi 产生了浓厚的兴趣,也就是从那时起,Acegi 发展成支持今天大多数认证机制的项目。对于认证我们已经讨论很多了,然而对于安全方面最大的挑战(也是讨论最少的)却来自于授权,Acegi 支持如下几种方式的授权:web 请求,方法调用,甚至对单个域对象实例的访问。

新特性包括简化的配置,并增加了新的功能,包括 OpenID、NTLM、JSR 250 注解、AspectJ 切入点(pointcut)支持、域 ACL 增强、RESTful URI 授权、组、分级角色、用户管理 API、数据库支持的“remember me”,portlet 认证、其他语言、Web Flow 2.0 支持、Spring IDE 可视化及自动完成、通过 Spring Web Services 1.5 提供的增强 WSS 支持等等。

这是向 Spring Portfolio 迈出的重要一步。Spring(Acegi)Security 已经成为 Java 平台上使用最广泛的企业安全框架,从 SourceForge 上 250,000 的下载量及每个版本超过 20,000 的下载量我们就能认识到这一点。

在 Acegi Security 主页上有关于新项目更多的技术细节:

Spring Security 2.0.0 构建在 Acegi Security 坚实的基础之上,并增加了很多新特性:
  • 简化的基于命名空间的配置语法。旧式配置可能需要上百行的 XML,然而我们对配置方式新的约定确保很多部署只需要不到十行
  • OpenID 集成,这是 web 界新出现的单点登录标准(受到 Google、IBM、Sun、Yahoo 等支持)
  • Windows NTLM 支持,提供针对 Windows 网络简单的企业范围的单点登录
  • 支持 JSR 250(“EJB 3”)security 注解,提供了针对授权元数据的基于标准的模型
  • AspectJ 切入点表达式语言支持,允许开发者在 Spring 管理的对象上应用横切(cross-cutting)安全逻辑
  • 对高性能域对象实例安全性(“ACL”)的改进
  • 全面支持 RESTful web 请求授权,这样它可以与构建 RESTful 系统的 Spring 2.5 @MVC 模型配合得很好
  • 支持长久以来都一直需要的组、层级角色及用户管理 API,他们联合起来可以减少开发时间并大幅改善系统的管理
  • 一个改进的、数据库支持的“remember me”实现
  • 支持开箱即用的 portlet 认证
  • 对其他语言的支持
  • 其他众多的改进、文档和新的例子
  • 通过 Spring Web Flow 2.0 对 web 状态与流程流转授权提供支持
  • 最新支持可视化安全方法,并且支持 Spring IDE 的自动完成
  • 通过 Spring Web Services 1.5 对 WSS(以前称作 WS-Security)增强支持

Matt Raible 描述了升级到 Spring Security 2.0的个人体会:

很兴奋看到 Spring Security 2.0 给予你如此多的能力和灵活性,完全不必使用 XML。谢谢你们了!

Matt 还为这次升级做了一个完全列表

Chris Baker 详细说明了从Acegi 升级到 Spring Security2.0 的路径,并且概要论述了从现存的基于 Acegi 的 Spring 应用升级到 Spring Security 2.0 的步骤:

这个关于如何配置 Spring Security 2.0 以访问数据库中的资源的简短指南并没有触及 Spring Security 2.0 中的许多新特性,但是我认为它展现了框架中最常用的一些功能,我希望它能对你有帮助。Spring Security 2.0 优于 ACEGI 的一个地方在于它的配置文件更简练,当我将旧有的 ACEGI 配置文件(172 行)与新的配置文件(42 行)相比时就很容易发现这一点。

就像我在步骤 1 中所说的那样,下载 Spring Security 是最棘手的事情。从那之后将一帆风顺……

之前 Dan 曾发表评论说“你使用 Acegi 一次,就有一个仙女死去”,作为回应,Rod Johnson幽默地说该安全框架的新版本“能够在童话王国胜任”。在 Spring Security 2.0 发布前,SpringSource 的 Ben Alex 也曾对 Dan 的话发表了评论

我们从社区论坛、开发者列表、JIRA、用户会议、培训、咨询和团队 blog 上收到了大量的反馈。毋庸置疑,很多人都在找寻对 Spring Security(以前的 Acegi)配置格式的改进方式,为此我们投入了大量的时间。

在下周的 Spring 体验大会上,我将展示 Spring Security 2.0.0 M1 的新特性将如何简化配置。

可以从这里下载最新发布的 Spring Security。

你可以从infoq.com/Spring找到更多关于 Spring 的信息。

查看英文原文:Spring (Acegi) Security 2.0 Adds OpenID Support, REST Capabilities, and Performance Improvements

JavaWeb框架安全语言 & 开发架构