使用Acegi保护Java应用程序,第1部分: 架构概览和安全过滤器

使用 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 的安全过滤器允许您执行保护企业应用程 序所需的几乎任何事情。

时间: 2024-08-03 01:31:31

使用Acegi保护Java应用程序,第1部分: 架构概览和安全过滤器的相关文章

使用Acegi保护Java应用程序,第5部分: 保护JSF应用程序中的JavaBean

JSF 应用程序中使用的 bean 的可配置安全性 这个 系列 由五部分组成,介绍了 Acegi Security System,并演示了如何 使用 Acegi 保护企业级 Java 应用程序.本文是该系列的最后一部分,将继续 讨论使用 Acegi 保护 JSF 应用程序.在 第 4 部分 中,我介绍了如何在不编 写 Java 代码的情况下使用 Acegi 保护 JSF 页面.我还详细说明了部署 JSF- Acegi 应用程序和用户访问该程序时发生的事件.在本部分中,我将着重介绍在 JSF 应用

使用Acegi保护Java应用程序,第4部分: 保护JSF应用程序

针对 JavaServer Faces 应用程序的可配置安全性 本 系列 的前 3 部分讨论了如何使用 Acegi Security System 保护 Java 企业应用程序: 第 1 部分 解释了如何使用 Acegi 的内置过滤器实现一个简单的基于 URL 的安全系统. 第 2 部分 展示了如何编写访问控制策略.将其存储在 LDAP 目录服务器中 ,以及配置 Acegi 与 LDAP 服务器交互,从而实现访问控制策略. 第 3 部分 展示了如何在企业应用程序中使用 Acegi 保护对 Jav

使用Acegi保护Java应用程序,第3部分: 实现对Java对象的访问控制

使用基于方法的安全性保护 Java 类实例 这期共分三部分的系列文章介绍了如何使用 Acegi 安全系统保护 Java 企业 应用程序.系列文章的 第 1 部分 简单介绍了 Acegi 并解释如何使用其内置的 安全过滤器实现一个简单的.基于 URL 的安全系统.第 2 部分 介绍了如何编 写访问控制策略并将其保存到一个 LDAP 目录服务器,以及如何配置 Acegi 来 与目录服务器进行交互,从而实现访问控制策略.第 3 部分(也是本系列的最 后一篇文章)将演示如何在企业应用程序中使用 Aceg

使用Acegi保护Java应用程序,第2部分: 使用LDAP目录服务器

使用 ApacheDS 和 Acegi 实现访问控制 了解了 Acegi 安全系统(Acegi Security System)的 基础知识 后,我们 将介绍该系统的更加高级的应用.在本文中,Bilal Siddiqui 向您展示了如何 结合使用 Acegi 和一个 LDAP 目录服务器,实现灵活的具有高性能的 Java 应用程序的安全性.还将了解如何编写访问控制策略并将其存储在 ApacheDS 中,然后配置 Acegi 使其与目录服务器交互,从而实现身份验证和授 权的目的. 这期共分三部分的

如何保护Java程序 防止Java反编译

Java是一种跨平台的.解释型语言.Java 源代码编译中间"字节码"存储于class文件中.Class文件是一种字节码形式的中间代码,该字节码中包括了很多源代码的信息,例如变量名.方法名等.因此,Java中间代码的反编译就变得非常容易.目前市场上有许多免费的.商用的反编译软件,都能够生成高质量的反编译后的源代码.所以,对开发人员来说,如何保护Java程序就变成了一个非常重要的挑战.本文首先讨论了保护Java程序的基本方法,然后对代码混淆问题进行深入研究,最后结合一个实际的应用程序,分

如何编写可通过代理访问因特网上的Web服务器的Java应用程序

本技巧将向您讲述如何编写可通过代理访问因特网上的Web服务器的Java应用程序.在Java应用程序中加入代理支持只需额外编写几行代码,且不依赖任何安全性"漏洞". 几乎所有的公司都十分关注保护自己的内部网络,以防黑客及入窃者.一种常见的安全措施是完全断开与因特网的连接.如果黑客们不能连接到您的任何一台机器,他们就不能非法进入您的系统.这种策略产生的不利副作用是,内部用户无法访问外部的因特网服务器,如Yahoo或JavaWorld.为了解决这一问题,网络管理员通常安装"代理服务

windows 7-运行一个基于Java的程序总是要求管理员权限怎么办?

问题描述 运行一个基于Java的程序总是要求管理员权限怎么办? #我的操作系统是windows 7. 安装了一个叫**Geogebra**的几何作图软件.这个软件是用Java开发的开源软件. 之前使用一直是正常的,最近一段时候,突然发生了一系列的怪事: 比如一直用的Acrobat突然失效了,后来只好重新安装,用amtlib解决. 再就是重装Acrobat之后就偶然发现Geogebra不用管理员权限无法打开了,即使彻底卸载,清除注册表项,重新安装也没用:还尝试了它的portable版本,也是一样.

为您的Java应用程序添加退出事件处理

程序 一个完整的Java应用程序,通常至少要有一个应用程序的结束点.对于一般程序来说,系统开发者根据需要和个人的偏好,会在程序结束位置,通过添加System.exit(0),或System.out(-1),来结束程序,或不加这些指令,让程序自然运行到结束. 如:下列典型代码 package untitled14;/** * This application is to demo how an applcation end */public class Test { public Test() {

从Java应用程序动态生成PDF文件

pdf|程序|动态 如果应用程序需要动态生成 PDF 文档,则需要 iText 库.开放源码的 iText 库使 PDF 文档的创建能够在瞬间完成.本文介绍了 iText 并提供了使用它从 Java ? 技术应用程序生成 PDF 文档的由浅入深的指南.我们创建了一个示例应用程序以更好地理解 iText. 很多应用程序要求动态生成 PDF 文档.这类应用程序包括银行生成用于电子邮件投递的客户报表,到读者购买特定图书章节并以 PDF 格式接收这些文档.例子罗列下去是很多的.在本文中,将使用 iTex