网络安全

位置:IT落伍者 >> 网络安全 >> 浏览文章

JavaBean安全新手段:JSF 与Acegi联合


发布日期:2020年04月02日
 
JavaBean安全新手段:JSF 与Acegi联合

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

Acegi是一个用于Spring的安全框架与JSF结合提供了安全和认证安全服务框架Acegi安全系统一个很重要的特点就是它并没有角色和用户组的概念Acegi安全系统目前支持两类安全管理对象第一类是为了使Spring管理的Bean可以作为MethodInvocation来使用Bean可以通过ProxyFactoryBean和BeanNameAutoProxyCreator来管理就像在Spring的事务管理一样使用第二类是FilterInvocation它用过滤器(Filter)来创建并简单地包装了HTTP的ServletRequestServletResponse和FilterChainFilterInvocation可以用来保护HTTP资源通常开发人员并不需要了解它的工作机制因为他们只需要将Filter加入webxmlAcegi安全系统就可以工作了

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

示例应用程序是一个用户登录购买的页面用户登录窗口输入正确的用户名和密码重定向到一个网页在新的网页中用户可能发生购买行为等我们将使用Acegi安全框架的配置安全的细节确保用户的ID已经验证并且他的存在对购买页的授权用户可以访问购买页如果有作用role_urlaccess 就确保了用户作出的购买行为是一个安全的商业行为JSF与Acegi安全授权验证中牵涉到AcegiJSFSpring 三个框架大致的流程如图介绍

第一步用户访问JSF网页

第二步Acegi检查访问用户是否被授权访问该页面

第三步如果授权验证是有效的就将控制权交给一个为JSF服务的界面servlet

第四步在准备的过程中JSF将会找到Catalog bean

第五步JSF检查界面结构文件(Faces configuration file)来寻找已经定义好的Catalog并且实例化Catalog bean的publicData以及privateData 属性参数会被写入到没有被具体化的publicCatalogprivateCatalog 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标记立即被生成了生命周期随即结束而一个完整的JSFAcegi请求处理生命周期被精心规划为个阶段但JSF框架会管理这一切所以程序员在获得更多控制能力的同时工作量并没有增加同时也让系统安全性能得到较大的提高总的来说案例相对简单但是JSFAcegi安全处理是非常到位的借助本文笔者希望大家对JSF以及Acegi给与更多关注

上一篇:一个基于UDP数据广播的局域网络会议程序

下一篇:Java开发中的线程安全选择与Swing