使用Acegi保护Java应用程序,第3部分: 实现对Java对象的访问控制 - 编程入门网
您可能需要使用额外的角色。例如,您可能考虑到您的安全 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 方法安全性拦截器的增强配置
使用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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |