Spring Security 2 的新特性

工程 | Ben Alex | 2007 年 12 月 06 日 | ...

今天我在博客圈闲逛,偶然发现了一篇我读过的最短的博客。引用几乎整个条目,“每次你使用 Acegi,就会有一个仙女死去。可悲的是,周围真的没有什么更好的东西了......”。

在我们的 社区论坛开发者 列表JIRA用户 会议 BOF培训支持咨询团队博客 之间,我们收到了大量的社区反馈。毫无疑问,很多人都在寻求改进 Spring Security (以前的 Acegi) 配置格式,我们投入了大量时间来实现这一点。

因为我将在下周的 Spring Experience 会议上 演讲,所以 Spring Security 2.0.0 M1 具有极其简化的配置。现在,您可以通过以下三个步骤将 Spring Security 添加到您的应用程序中

  1. 将所需的 JAR 添加到您的类路径。 Maven 2 用户只需在其 POM 中指定一个依赖项,因为我们使用 Maven 构建。
  2. 将单个过滤器和相应的映射添加到您的 web.xml。
  3. 将一些元素添加到您的 Spring 容器配置文件。
将过滤器添加到 web.xml 需要以下代码

<filter>
    <filter-name>_filterChainProxy</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>_filterChainProxy</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

第三个也是最后一个步骤需要您将新的 Spring Security 2 命名空间添加到现有配置文件,或者创建一个包含您的安全配置的新 XML 文件。对于许多用户来说,该文件将非常短,并且类似于



<beans:beans namespace declarations>
    <annotation-driven />

    <http auto-config="true">
        <intercept-url pattern="/**" access="IS_AUTHENTICATED_REMEMBER" />
    </http>

    <repository>
        <user-service hash="md5:hex">
            <user name="rod" password="a564de63c2d0da68cf47586ee05984d7" authorities="ROLE_SUPERVISOR,ROLE_USER" />
        </user-service>
    </repository>
</beans:beans>

上述配置可以可靠地为您的 Web 应用程序提供以下功能

  • 基于表单的登录
  • 注销处理程序
  • 自动生成登录页面
  • 基本身份验证支持(非常适合远程协议和 Web 服务)
  • 通过 cookie 提供记住我支持
  • 匿名身份验证(因此您的所有匿名用户都有用户名和角色)
  • 与您的数据库支持的用户存储库集成(您也可以使用 <user .../> 在 XML 中指定它们)
  • 自动强制执行 Spring 管理对象上的 @Secured 注释
  • Servlet API 集成(即 HttpServletRequest.isUserInRole(String) 和 HttpServletRequest.getPrincipal())
  • 要求登录才能使用应用程序的任何部分
因此,<http auto-configure="true"> 语句为标准 Web 应用程序提供了一个元素中的大部分需求。当然,您可以微调各个设置,例如指定不同的领域名称 (<http auto-configure="true" realm="My Application">),自定义您的登录页面详细信息 (<form-login login-page="/myLogin.jsp" />),或切换到更高级的记住我令牌存储库 (<remember-me token-repository="persistedRepository" />)。

包括命名空间声明形式,上述配置文件大约有 16 行。旧的配置样式需要大约 120 行 XML 才能实现类似的功能。

虽然配置改进是相当大的,但我们在 Spring Security 2.0.0 M1 中也有其他功能!首先,现在您可以选择将记住我令牌存储在数据库中,这提供了增强的安全性。我们还具有分层角色支持,这是一种类固醇上的授予权限别名策略。此外,期待已久的用户管理 API、NTLM 支持、portlet 集成等等。

如果您想了解更多关于 Spring Security 2 的信息,请来 The Spring Experience 观看它的实际应用。安排了三个会议来介绍 Spring Security 2,包括 简介新功能 和改进的介绍,以及如何使用新的 portlet 安全集成。对于那些无法参加的人,您将可以在下周晚些时候下载第一个里程碑版本。

希望这些增强功能能够拯救一些仙女。

获取 Spring 新闻通讯

与 Spring 新闻通讯保持联系

订阅

遥遥领先

VMware 提供培训和认证来加速您的进步。

了解更多

获得支持

Tanzu Spring 在一个简单的订阅中为 OpenJDK™、Spring 和 Apache Tomcat® 提供支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部