快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
其值定义了这些 URL 的角色。/protected/* URL 的 角色是 ROLE_HEAD_OF_ENGINEERING。您可以根据应用程序的需要定义任何角色 。

回想一下 清单 6,您为用户名 alice 定义了 ROLE_HEAD_OF_ENGINEERING。 这就是说 alice 将能够访问 /protected/* URL。

过滤器工作原理

正如您已经了解到的一样,Acegi 的组件彼此依赖,从而对您的应用程序进 行保护。在本文后面的部分,您将看到如何对 Acegi 进行配置,从而按照特定 的顺序应用安全过滤器,因此需要创建过滤器链。出于这个目的, Acegi 保存了一个过滤器链对象,它封装了为保护应用程序而配置了的所有过滤 器。图 1 展示了 Acegi 过滤器链的生命周期,该周期从客户机向您的应用程序 发送 HTTP 请求开始。(图 1 显示了服务于浏览器客户机的容器。)

图 1. 托管 Acegi 过滤器链以安全地为浏览器客户机服务的容器

Acegi 过滤器的生命周期

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

时间:2011-09-07 Bilal Siddiqui

下面的步骤描述了过滤器链的生命周期:

浏览器客户机向您的应用程序发送 HTTP 请求。

容器接收到 HTTP 请求并创建一个请求对象,该对象将封装 HTTP 请求中包 含的信息。容器还创建一个各种过滤器都可处理的响应对象,从而为发出请求的 客户机准备好 HTTP 响应。容器然后调用 Acegi 的过滤器链代理,这是一个代 理过滤器。该代理知道应用的过滤器的实际顺序。当容器调用代理时,它将向代 理发送请求、响应以及过滤器链对象。

代理过滤器调用过滤器链中第一个过滤器,向其发送请求、响应和过滤器链 对象。

链中的过滤器逐个执行其处理。一个过滤器可以通过调用过滤器链中下一个 过滤器随时终止自身处理。有的过滤器甚至根本不执行任何处理(比如,如果 APF 发现一个到来的请求没有要求身份验证,它可能会立即终止其处理)。

当身份验证过滤器完成其处理时,这些过滤器将把请求和响应对象发送到应 用程序中配置的拦截过滤器。

拦截器决定是否对发出请求的客户机进行授权,使它访问所请求的资源。

拦截器将控制权传输给应用程序(比如,成功进行了身份验证和授权的客户 机请求的 JSP 页面)。

应用程序改写响应对象的内容。

响应对象已经准备好了,容器将响应对象转换为 HTTP 响应,并将响应发送 到发出请求的客户机。

为帮助您进一步理解 Acegi 过滤器,我将详细探讨其中两个过滤器的操作: Session Integration Filter 和 Authentication Processing Filter。

SIF 如何创建一个安全上下文

图 2 展示了 SIF 创建安全上下文所涉及到的步骤:

图 2. SIF 创建安全上下文

SIF 如何创建安全上下文

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

时间:2011-09-07 Bilal Siddiqui

现在详细地考虑下面这些步骤:

Acegi 的过滤器链代理调用 SIF 并向其发送请求、响应和过滤器链对象。注 意:通常将 SIF 配置为过滤器链中第一个过滤器。

SIF 检查它是否已经对这个 Web 请求进行过处理。如果是的话,它将不再进 一步进行处理,并将控制权传输给过滤器链中的下一个过滤器(参见下面的第 4 个步骤)。如果 SIF 发现这是第一次对这个 Web 请求调用 SIF,它将设置一个 标记,将在下一次使用该标记,以表示曾经调用过 SIF。

SIF 将检查是否存在一个会话对象,以及它是否包含安全上下文。它从会话 对象中检索安全上下文,并将其放置在名为 security context holder 的临时占位符中。如果不存在会话对象,SIF 将创建一个新的安全 上下文,并将它放到 security context holder 中。注意:security context holder 位于应用程序的范围内,所以可以被其他的安全过滤器访问。

SIF 调用过滤器链中的下一个过滤器。

其他过滤器可以编辑安全上下文。

SIF 在过滤器链完成处理

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号