使用 Acegi Security System 实现基于 URL 的安全性
Acegi Security System 是一种功能强大并易于使用的替代性方案,使您不 必再为 Java 企业应用程序编写大量的安全代码。虽然它专门针对使用 Spring 框架编写的应用程序,但是任何类型的 Java 应用程序都没有理由不去使用 Acegi。这份共分三部分的系列文章详细介绍了 Acegi,并展示了如何使用它保 护简单的企业应用程序以及更复杂的应用程序。
本系列首先介绍企业应用程序中常见的安全问题,并说明 Acegi 如何解决这 些问题。您将了解 Acegi 的架构模型及其安全过滤器,后者包含了在保护应用 程序中将用到的大多数功能。您还将了解到各个过滤器如何单独进行工作,如何 将它们组合起来,以及过滤器如何在一个企业安全实现中将各种功能从头到尾地 链接起来。本文最后通过一个样例应用程序演示了基于 URL 安全系统的 Acegi 实现。本系列后续两篇文章将探究 Acegi 的一些更高级的应用,包括如何设计 和托管访问控制策略,然后如何去配置 Acegi 以使用这些策略。
您必须 下载 Acegi,这样才能编译本文的示例代码并运行本文的样例应用程 序。还必须有作为工作站的一部分运行的 Tomcat 服务器。
企业应用程序安全性
由于企业内容管理(ECM)应用程序管理存储在不同类型数据源(如文件系统 、关系数据库和目录服务)中的企业内容的编写和处理,ECM 安全性要求对这些 数据源的访问进行控制。比如,一个 ECM 应用程序可能会控制被授权读取、编 辑或删除数据的对象,而这些数据和制造业企业的设计、市场营销、生产以及质 量控制有关。
在一个 ECM 安全场景中,比较常见的就是通过对企业资源定位符(或网络地 址)应用安全性,从而实现访问控制。这种简单的安全模型被称为统一资源定位 符 或 URL 安全性。正如我在本文后面(以及本系列后续文章)所演示的一样, Acegi 为实现 URL 安全性提供了全面的特性。
然而,在很多企业场景中,URL 安全性还远远不够。比如,假设一个 PDF 文 档包含某个制造业公司生产的特殊产品的数据。文档的一部分包含了将由该公司 的设计部门编辑和更新的设计数据。另一部分包含了生产经理将使用的生产数据 。对于诸如此类的场景,需要实现更加细粒度的安全性,对文档的不同部分应用 不同的访问权限。
本文介绍了 Acegi 为实现 URL 安全性而提供的各种功能。本系列的下一篇 文章将演示此框架的基于方法的安全性,它提供了对企业数据访问的更细粒度的 控制。
Acegi Security System
Acegi Security System 使用安全过滤器来提供企业应用程序的身份验证和 授权服务。该框架提供了不同类型的过滤器,可以根据应用程序的需求进行配置 。您将在本文后面了解到 安全过滤器的不同类型;现在,只需注意可以为如下 任务配置 Acegi 安全过滤器:
在访问一个安全资源之前提示用户登录。
通过检查安全标记(如密码),对用户进行身份验证。
检查经过身份验证的用户是否具有访问某个安全资源的特权。
将成功进行身份验证和授权的用户重定向到所请求的安全资源。
对不具备访问安全资源特权的用户显示 Access Denied 页面。
在服务器上记录成功进行身份验证的用户,并在用户的客户机上设置安全 cookie。使用该 cookie 执行下一次身份验证,而无需要求用户登录。
将身份验证信息存储在服务器端的会话对象中,从而安全地进行对资源的后 续请求。
在服务器端对象中构建并保存安全信息的缓存,从而优化性能。
当用户退出时,删除为用户安全会话而保存的服务器端对象。
与大量后端数据存储服务(如目录服务或关系数据库)进行通信,这些服务 用于存储用户的安全信息和 ECM 的访问控制策略。
正如这个列表显示的那样,Acegi 的安全过滤器允许您执行保护企业应用程 序所需的几乎任何事情。