使用Acegi保护Java应用程序,第2部分: 使用LDAP目录服务器 - 编程入门网
一下较早的章节 “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. 配置搜索查询以搜索特定用户
搜索查询的参数 清单 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 配置
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |