LDAP新手。LDAP的排列方式是人员和组。这些人拥有诸如姓名、uid和邮件之类的用户信息。组具有组名和多个成员字段,该字段的值如cn=First Last、cn=people、dc=commic、dc=com,列出了组成员的people。
当前从userid和password开始,进行两次搜索:1( 通过在用户基本域uid=value上搜索来获取用户。然后从用户那里获得名字和姓氏。2( 基于member=cn=FirstLast,cn=People,dc=commic,dc=com在Groups基本域上搜索,并迭代返回到groupname字段的组对象列表。
我只是想知道有没有办法在一次搜索中完成所有这些,还是需要两次搜索?
不幸的是,您无法在一个操作中完成想要的操作。
此外,你所做的并不总是有效的。与其检索用户的名字和姓氏,不如检索他们的可分辨名称(dn属性(,并在此基础上进行组搜索。名字和姓氏可以在LDAP中修改,并且可能由于结婚/离婚等原因而发生。
只要实现反向组成员资格维护覆盖,这是可能的。
要在不执行额外搜索的情况下确定条目是哪个组的成员,memberOf覆盖正是您所需要的。
memberof overlay更新属性(默认情况下为memberof(每当成员身份属性发生更改时(默认为成员(对象类(默认情况下为groupOfNames(的条目的触发更新。因此,它提供了组列表的维护当组的常规维护由完成时,条目是的成员修改组条目上的成员。
您可能会发现此服务器故障帖子对如何.很有用
一旦您准备好使用memberOf
属性,您可能需要在每个组条目上手动运行ldapmodify
,但只能运行一次,这样所有member
的条目都可以在其各自的memberOf属性中配置相应的组dn。
最后,要为给定用户执行组成员身份搜索,只需搜索用户条目并迭代memberOf
属性即可获得组dn。