今天就跟大家聊聊有关Acegi安全系统与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框架会管理这一切,所以,程序员在获得更多控制能力的同时,工作量并没有增加,同时也让系统安全性能得到较大的提高。
看完上述内容,你们对Acegi安全系统与JSF结合的示例分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/204686.html