gpt4 book ai didi

ldap - 如何编写 LDAP 查询来测试用户是否是组的成员?

转载 作者:行者123 更新时间:2023-12-02 11:46:27 34 4
gpt4 key购买 nike

我想编写一个 LDAP 查询来测试用户 (sAMAccountName) 是否是特定组的成员。是否可以这样做以便我获得 0 或 1 个结果记录?

我想我可以获取用户的所有组并测试每个组是否匹配,但我想知道是否可以将其打包到一个 LDAP 表达式中。

有什么想法吗?

谢谢

最佳答案

您应该能够在此处使用此过滤器创建查询:

(&(objectClass=user)(sAMAccountName=yourUserName)
(memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com))

当您针对 LDAP 服务器运行该命令时,如果得到结果,则您的用户“yourUserName”确实是组“CN=YourGroup,OU=Users,DC=YourDomain,DC=com”的成员

尝试看看这是否有效!

如果您使用 C#/VB.Net 和 System.DirectoryServices,此代码片段应该可以解决问题:

DirectoryEntry rootEntry = new DirectoryEntry("LDAP://dc=yourcompany,dc=com");

DirectorySearcher srch = new DirectorySearcher(rootEntry);
srch.SearchScope = SearchScope.Subtree;

srch.Filter = "(&(objectClass=user)(sAMAccountName=yourusername)(memberOf=CN=yourgroup,OU=yourOU,DC=yourcompany,DC=com))";

SearchResultCollection res = srch.FindAll();

if(res == null || res.Count <= 0) {
Console.WriteLine("This user is *NOT* member of that group");
} else {
Console.WriteLine("This user is INDEED a member of that group");
}

请注意:这只会测试直接组成员资格,而不会测试您域中所谓的“主要组”(通常为“cn=Users”)的成员资格。它不处理嵌套成员资格,例如用户 A 是组 A 的成员,组 A 是组 B 的成员 - 用户 A 实际上也是组 B 的成员这一事实并未在此处反射(reflect)出来。

马克

关于ldap - 如何编写 LDAP 查询来测试用户是否是组的成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1032351/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com