快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
一下较早的章节 “LDAP 目录设置”,我在将用户信息存储到 LDAP 目 录时添加了一点灵活性。方法是在 图 1 所示的 departments 节点内创建一个 特定用户(specialUser)。

如果试图使用 清单 5 中配置的任何一种 DN 模式创建特定用户的 DN,您会 发现没有一种 DN 模式可用。因此,当用户尝试登录时,Acegi 的 authenticator bean 将不能够构造正确的 DN,从而无法对该用户进行身份验证 。

通过允许您指定搜索过滤器,Acegi 能够处理类似的特殊情况。身份验证器 bean 使用搜索过滤器查找不能够通过 DN 模式构造 DN 进行身份验证的用户。

清单 5 中的第二个 <property> 标记具有一个 <ref> 子标记 ,它引用名为 userSearch 的 bean。userSearch bean 指定搜索查询。清单 6 展示了如何配置 userSearch bean 来处理特定用户:

清单 6. 配置搜索查询以搜索特定用户

<bean id="userSearch" class="org.acegisecurity.ldap.search.FilterBasedLdapUserSearch"> <constructor-arg> <value>ou=departments</value> </constructor-arg> <constructor-arg> <value>(uid={0})</value> </constructor-arg> <constructor-arg> <ref local="initialDirContextFactory" /> </constructor-arg> <property name="searchSubtree"> <value>true</value> </property> </bean>

搜索查询的参数 清单 6 展示了 userSearch bean 是 org.acegisecurity.ldap.search.FilterBasedLdapUserSearch 类的一个实例, 该类的构造函数具有三个参数。第一个参数指定 authenticator 在哪个节点中 搜索用户。第一个参数的值为 ou=departments,该值是一个 RDN,指定了 图 2 所示的 departments 节点。

第二个参数 (uid={0}) 指定了一个搜索过滤器。由于使用 uid 属性指定用 户,因此可以通过查找 uid 属性具有特定值的节点来查找用户。正如您所料, 花括号里面的 0 向 Acegi 表示使用进行身份验证的用户的用户名(本例中为 specialUser)替换 {0}。

第三个参数是对讨论 清单 5 中的 BindAuthenticator 构造函数时引入的相 同初始上下文的引用。回想一下,当指定了初始上下文后,稍后将在该初始上下 文节点的子节点内进行所有的搜索操作。注意,应将指定为 清单 5 中第一个参 数(ou=departments)的值的 RDN 前加到初始上下文。

除了这三个构造器参数,清单 6 所示的 userSearch bean 还具有一个名为 searchSubtree 的属性。如果将其值指定为 true,搜索操作将包括节点的子树 (即所有子节点、孙节点、孙节点的子节点等),该节点被指定为构造函数的第 一个参数的值。

authenticator bean 的配置完成后,下一步将查看 populator bean 的配置 ,如 清单 4 所示。

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

时间:2011-09-07 ibm Bilal Siddiqui

配置 populator

populator bean 将读取已经通过 authenticator bean 身份验证的用户的业 务角色。清单 7 展示 populator bean 的 XML 配置:

清单 7. populator bean 的 XML 配置

<bean id="populator" class="org.acegisecurity.providers.ldap.populator.DefaultLdapAuthoriti esPopulator"> <constructor-arg> <ref local="initialDirContextFactory"/> </constructor-arg> <constructor-arg> <value>ou=departments</value> </constructor-arg> <property name="groupRoleAttribute"> <val

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