快速业务通道

使用Acegi保护Java应用程序,第2部分: 使用LDAP目录服务器 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
name="accessDecisionManager"  ref="accessDecisionManager" /> <property name="objectDefinitionSource"> <value> CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON PATTERN_TYPE_APACHE_ANT  /protected/engineering/**=ROLE_HEAD_OF_ENGINEERING /protected/marketing/**=ROLE_HEAD_OF_MARKETING /**=IS_AUTHENTICATED_ANONYMOUSLY  </value> </property> </bean>

在清单 9 中,IF 包含三个参数。其中第一个和第三个参数与第 1 部分中最 初配置的参数相同。这里添加了第二个参数(名为 accessDecisionManager 的 bean)。

accessDecisionManager bean 负责指定授权决策。它使用清单 9 中第三个 参数提供的访问控制定义来指定授权(或访问控制)决策。第三个参数是 objectDefinitionSource。

使用Acegi保护Java应用程序,第2部分: 使用LDAP目录服务器(11)

时间:2011-09-07 ibm Bilal Siddiqui

配置访问决策管理器

accessDecisionManager 决定是否允许一个用户访问某个资源。Acegi 提供 了一些访问决策管理器,它们指定访问控制决策的方式有所不同。本文只解释了 其中一种访问决策管理器的工作方式,其配置如清单 10 所示:

清单 10. 配置访问决策管理器

<bean id="accessDecisionManager"  class="org.acegisecurity.vote.AffirmativeBased"> <property name="decisionVoters"> <list> <bean class="org.acegisecurity.vote.RoleVoter"/> <bean  class="org.acegisecurity.vote.AuthenticatedVoter" /> </list> </property> </bean>

在清单 10 中,accessDecisionManager bean 是 org.acegisecurity.vote.AffirmativeBased 类的实例。 accessDecisionManager bean 只包含一个参数,即投票者(voter)列表。

在 Acegi 中,投票者确定是否允许某个用户访问特定的资源。当使用 accessDecisionManager 查询时,投票者具有三个选项:允许访问(access- granted)、拒绝访问(access-denied),如果不确定的话则放弃投票 (abstain from voting)。

不同类型的访问决策管理器解释投票者决策的方法也有所不同。清单 10 所 示的 AffirmativeBased 访问决策管理器实现了简单的决策逻辑:如果任何投票 者强制执行肯定投票,将允许用户访问所请求的资源。

投票者逻辑

Acegi 提供了若干个投票者实现类型。accessDecisionManager 将经过验证 的用户的信息(包括用户的业务角色信息)和 objectDefinitionSource 对象传 递给投票者。本文的示例使用了两种类型的投票者,RoleVoter 和 AuthenticatedVoter,如清单 10 所示。现在看一下每种投票者的逻辑:

RoleVoter 只有在 objectDefinitionSource 对象的行中找到以 ROLE_ 前缀 开头的角色时才进行投票。如果 RoleVoter 没有找到这样的行,将放弃投票; 如果在用户业务角色中找到一个匹配的角色,它将投票给允许访问;如果没有找 到匹配的角色,则投票给拒绝访问。在 清单 9 中,有两个角色具有 ROLE_ 前 缀:ROLE_HEAD_OF_ENGINEERING 和 ROLE_HEAD_OF_MARKETING。

AuthenticatedVoter 只有在 objectDefinitionSource 对象中找到具有某个 预定义角色的行时才进行投票。在 清单 9 中,有这样一行: IS_AUTHENTICATED_ANONYMOUSLY。匿名身份验证意味着用户不能够进行身份验证 。找到该行后,AuthenticatedVoter 将检查一个匿名身份验证的用户是否可以 访问某些不受保护的资源(即这些资源没有包含在具备 ROLE_ 前缀的行中)。 如果 AuthenticatedVoter 发现所请求的资源是不受保护的并且 obj

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