快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
您可能需要使用额外的角色。例如,您可能考虑到您的安全 bean 需要通过 Java 的 Remote Method Invocation (RMI) 框架或一个 Web 服务访问某个远程 应用程序。访问安全 bean 的用户不会占用远程应用程序要求访问用户所具备的 业务角色。

在本例中,Acegi 首先检查用户是否经过授权来访问安全 bean。之后, Acegi 允许用户访问安全 bean。当安全 bean 试图访问远程服务时,它需要使 用额外的业务角色。如果访问安全 bean 的用户不具备额外角色,安全 bean 就 不能成功访问远程服务。

run-as-replacement 机制

Acegi 框架提供了一种名为 run-as-replacement 的简单机制,允许您仅在 方法调用期间为通过身份验证的用户配置一个或多个额外角色。您可以使用 run-as-replacement 机制为访问远程应用程序的安全 bean 配置额外角色。这 意味着只要安全 bean 需要访问远程应用程序,Acegi 将为用户装载额外角色, 从而允许安全 bean 访问远程应用程序。

清单 6 对 清单 5 中的方法安全性拦截器的配置进行了增强。增强后的配置 使用了 run-as-replacement 机制。

清单 6. Acegi 方法安全性拦截器的增强配置

<bean id="privateCatalogSecurityInterceptor"   class="org.acegisecurity.intercept.method.aopalliance.MethodSecurityIn terceptor">   <property name="authenticationManager">     <ref bean="authenticationManager"/>   </property>   <property name="accessDecisionManager">     <ref bean="accessDecisionManager"/>   </property>   <property name="runAsManager">            <bean id="runAsManager"      class="org.acegisecurity.runas.RunAsManagerImpl">               <property name="key">                <value>myKeyPass</value>               </property>            </bean>           </property>   <property name="objectDefinitionSource">    <value>     sample.PrivateCatalog.getData=ROLE_HEAD_OF_ENGINEERING,RUN_AS_MANAGER      </value>   </property> </bean>

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

时间:2011-09-07 ibm Bilal Siddiqui

清单 6 使用粗体显示了两处增强(与 清单 5 相比)。第一处增强为 runAsManager 属性。runAsManager 属性的作用是向通过身份验证的用户动态添 加角色。出于这个目的,runAsManager 属性包含了 RunAsManagerImpl bean 的 定义。RunAsManagerImpl bean 只有在满足下面的条件时才可变为活跃状态:在 objectDefinitionSource 方法的角色定义中找到以 RUN_AS_ 为前缀的角色。例 如,PrivateCatalog.getData() 方法的角色定义(清单 6 中以粗体显示的第二 处增强)具有一个 RUN_AS_MANAGER 角色。

RunAsManagerImpl bean 包含一个名为 key 的属性,它封装的加密键用于确 保只将额外的角色作为 run-as-replacement 程序的一部分生成。

当用户调用 getData() 方法时,RunAsManagerImpl bean 变为活跃状态并创 建名为 RUN_AS_MANAGER 的额外角色,从而启用 getData() 方法访问远程应用 程序。

增强的方法安全性

本文的 下载源代码 包含一个名为 EnhancedAcegiMethodSecurity 的示例应 用程序,它可以演示 run-as-replacement 机制和程序。该应用程序

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号