1

我在 ruby​​ 中使用 Net::LDAP 来获取人员实体信息,如 cn,department 但我也想要用户所属的列表组,我尝试使用 memberof 属性但它只返回下面给出的一个组示例,但我我是多个组的成员

{:cn=>"Garg, Puja",
 :title=>"Developer",
 :mail=>"Puja@abc.com",
 :samaccountname=>"pujagarg",
 :memberof=>"CN=DEVELOPER TEAM,OU=Distribution Groups,OU=_Global,OU=ABC,DC=int,DC=abc,DC=com"}
4

1 回答 1

0

解决方案 1:memberOf(在 AD 中)存储为 distinctNames 列表。您的过滤器需要类似于:

(&(objectCategory=user)(memberOf=cn=MyCustomGroup,ou=ouOfGroup,dc=subdomain,dc=domain,dc=com))

如果您还没有专有名称,您可以使用以下命令进行搜索:

(&(objectCategory=group)(cn=myCustomGroup))

例子:

filter = "(&(objectClass=user)(sAMAccountName=#{username})(memberof=CN=group-name,OU=Linux Groups,OU=Linux))"

此示例列出了用户所属的所有组。

更多细节参考这个线程

解决方案 2:使用现代ldapsearch命令行工具的示例:

ldapsearch --port 1389 --baseDn 'ou=people,dc=example,dc=com' \
     --sizeLimit 3 --searchScope one --bindDn 'cn=directory manager' \
     --bindPasswordFile ~/.pwdFile '(uid=user.0)' isMemberOf
dn: uid=user.0,ou=people,dc=example,dc=com
isMemberOf: cn=Dynamic Home Directories,ou=groups,dc=example,dc=com
isMemberOf: cn=bellevue,ou=groups,dc=example,dc=com
isMemberOf: cn=shadow entries,ou=groups,dc=example,dc=com
isMemberOf: cn=persons,ou=groups,dc=example,dc=com

此搜索响应表明user.0是所列组的成员。以上是从 LDAP 角度处理组成员身份的一种方法的一般说明。

另请参阅此链接以获取更多详细信息。

于 2021-08-06T11:38:36.300 回答