子组织和唯一ID

时间:2012-09-04 09:07:39

标签: ldap spring-ldap apacheds

我可以使用ApacheDS

成功验证我的应用程序

但现在我只使用一个域名。

我想在根域下添加子域或子组织。

例如,根组织为

dc=example,dc=com

和子组织dc=x

另一个子组织dc=y

现在我可以使用uid属性验证用户

像:

user-search-filter="(uid={0})"

我使用登录名如user1,没有@ extension

但我希望有子组织,我想使用user1@x.example.com

是否可能以及如何?

我的申请是春季申请,但我认为主题独立于我的申请方。

1 个答案:

答案 0 :(得分:1)

电子邮件地址的LDAP标准跟踪中定义的属性为mail中定义的rfc822mailbox0.9.2342.19200300.100.1.3user-search-filter="mail={0}"。也许您的过滤器应该是使用其中一种类型的属性断言,例如organization

我不确定“手动”是什么意思。 LDAP没有组织概念,只有可能属于mail的条目。如果条目属于允许或需要objectClass属性的mail,则这些条目可能具有mail={0}属性。换句话说,如果您的过滤器是mail=user1@x.example.com(可能变为mail),那么使用该过滤器进行搜索(给定适当的基础对象和范围)将返回所有具有{{1}的条目无论用户位于何处,无论user1@x.example.com属性的值如何,都会使用值uid的属性。

如果组织中的用户可以通过组织或其他属性识别出其他方式,则过滤器可以是:

(&(uid={0})(o=x))

(&(uid={0})(o=y))

无论如何,用户的条目必须可以通过条目的内容来识别。 LDAP数据库中的主键是可分辨名称uid=abc,dc=x,dc=example,dc=com),但条目中的属性可用于收紧过滤器。一些替代方案是:

  • 使用唯一标识符(所有uidmail值在数据库中都是唯一的,因此,只有一个值会返回到搜索请求中)
  • 使用属性标识组织中的用户(例如上面示例过滤器中的o
  • 使用动态组生成组织中的用户列表。
  • 考虑使用可扩展匹配过滤器使专有名称中的值成为过滤过程的一部分

另见

  • RFC4524 - 这篇文章是关于ldapsearch命令行工具,但这些概念在构建搜索请求时很有用
  • using ldapsearch