使用Acegi保护Java应用程序,第2部分: 使用LDAP目录服务器 - 编程入门网
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. 配置访问决策管理器
在清单 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |