Acegi安全系统与JSF结合

开发 后端
本文介绍Acegi安全系统与JSF结合,Acegi是一个用于Spring的安全框架,与JSF结合,提供了安全和认证安全服务框架。

在Java Web开发中,Javabean安全涉及到两个不同的概念,认证和授权。前者是关于确认用户是否确实是他们所宣称的身份。授权则是关于确认用户是否有允许执行一个特定的操作。JSF (JavaServer Faces) 是J2EE 5开发平台的组成部分,作为表示层的技术,越来越受到Java开发人员的亲睐。在开发过程中,JSP通过DI 技术很方便的和使用类似技术的 Spring 进行整合。JSF在与Acegi安全系统结合之后,让JavaBean的安全性得到很大提高。

Acegi安全系统一个很重要的特点就是它并没有角色和用户组的概念。Acegi安全系统目前支持两类安全管理对象。***类是为了使Spring管理的Bean可以作为MethodInvocation来使用,Bean可以通过ProxyFactoryBean和BeanNameAutoProxyCreator来管理,就像在Spring的事务管理一样使用。第二类是FilterInvocation。它用过滤器(Filter)来创建,并简单地包装了HTTP的 ServletRequest,ServletResponse和FilterChain。FilterInvocation可以用来保护HTTP资源。通常,开发人员并不需要了解它的工作机制,因为他们只需要将Filter加入web.xml,Acegi安全系统就可以工作了。

本文用一个简单的Web应用实例的Apache myfaces jsf的执行情况向大家展示,如何使用Spring的application context整合acegi的认证和授权的功能,达到JSF的应用。读者可以理解到Acegi如何落实URL级别的角色授权,以及如何实施Acegi的业务层的安全说明。

示例应用程序是一个用户登录购买的页面。用户登录窗口输入正确的用户名和密码,重定向到一个网页,在新的网页中用户可能发生购买行为等。我们将使用 Acegi安全框架的配置安全的细节,确保用户的ID已经验证,并且他的存在对购买页的授权。用户可以访问购买页,如果有作用 role_urlaccess 。就确保了用户作出的购买行为是一个安全的商业行为。JSF与Acegi安全授权验证中牵涉到Acegi、JSF、Spring 三个框架。
***步:用户访问JSF网页
第二步:Acegi检查访问用户是否被授权访问该页面。
第三步:如果授权验证是有效的,就将控制权交给一个为JSF服务的界面servlet。
第四步:在准备的过程中,JSF将会找到Catalog bean。
第五步:JSF检查界面结构文件(Faces configuration file)来寻找已经定义好的Catalog,并且实例化。Catalog bean的publicData以及privateData 属性参数会被写入到没有被具体化的publicCatalog、privateCatalog beans。
第六步:JSF利用Spring的 DelegatingVariableResolver 可变解析器解释 publicCatalog和 privateCatalog bean。
第七步:JSF利用Acegi 生成获得publicCatalog 和 privateCatalog beans方法,读取公共数据和私有数据。
第八步:Acegi再次执行它的认证进程来访问bean。
第九步:当Acegi获得用户成功地访问了bean信息后,系统将产生一个获取方法来读取公共和私有的数据,并且将数据传送给JSF。
第十步:JSF调用目录bean的设置方法,将公共和私有数据写入Catalog bean
第十一步:JSF执行其周期完成,并顺利传送页面JSF。

这样,一个用户从输入用户到进入系统,进行购买操作的流程就完成。在这个过程中,Acegi与JSF一起完成了用户的认证授权工作。相对于JSP用户访问授权的过程,JSF的生命周期要比JSP复杂得多。JSP的生命周期非常简单,页面被执行时,HTML标记立即被生成了,生命周期随即结束。而一个完整的 JSF-Acegi请求-处理生命周期被精心规划为11个阶段,但JSF框架会管理这一切,所以,程序员在获得更多控制能力的同时,工作量并没有增加,同时也让系统安全性能得到较大的提高。总的来说,案例相对简单,但是JSF-Acegi安全处理是非常到位的,借助本文,笔者希望大家对JSF以及 Acegi给与更多关注。

【编辑推荐】

  1. 简述JSF入门介绍
  2. JSF和Struts的区别概述
  3. 编写JSF自定义复合组件的原则和技巧
  4. 选择JSF不选Struts的十大理由
  5. Tapestry和JSF对比
责任编辑:佚名 来源: 中国IT实验室
相关推荐

2009-06-23 17:54:41

OSGi与JSF

2009-06-29 14:19:50

2011-06-21 16:30:57

2013-05-08 23:24:43

2021-12-06 12:37:51

智能自动驾驶汽车

2009-06-19 09:52:46

Acegi安全框架Spring框架

2010-04-17 13:17:29

网络安全管理策略web安全

2021-07-07 14:26:41

智能技术道路安全

2019-08-28 11:39:29

安全系统互联网技术

2012-02-16 09:17:53

2022-07-28 10:28:37

物联网智能建筑

2016-01-08 13:48:56

2022-08-02 10:26:37

人工智能机场AI

2014-04-30 11:24:31

2010-11-03 09:40:14

FortinetIBM收购

2021-07-14 09:55:27

网络安全恶意软件安全自愈

2009-06-19 16:19:21

2023-11-20 13:54:00

2020-06-01 07:00:00

智能安全系统黑客网络安全

2009-06-17 15:18:38

JSF与Spring
点赞
收藏

51CTO技术栈公众号