gpt4 book ai didi

active-directory - DirectoryEntry memberOf 属性返回完整路径

转载 作者:行者123 更新时间:2023-12-04 07:27:36 31 4
gpt4 key购买 nike

我只需要用户所属组的 commonName。

DirectoryEntry user = new DirectoryEntry("LDAP://cn=myuser....");
foreach(string path in user.Properties["memberOf"])
Console.WriteLine(path);

那么 memberOf 属性包含一组字符串,即组的完整路径。这是有道理的,但这不是我想要的。

我很确定我不应该为每个路径新建一个 DirectoryEntry 以获得通用名称,但是从路径中简单地解析出 cn 是最好的主意吗? (这看起来相当野蛮)

必须有更好的方法来获取用户所属组的 SearchResults。

顺便说一句,这是 .NET 2,所以我不能做任何花哨的 LINQ to AD 东西,也不能访问 ActiveDirectory 的 DirectoryServices 中的新位。

最佳答案

CN 不一定等于组名。不建议从 DN 中解析它,因为 DN 被转义了。您需要查询对象的目录。

要检索单个对象,请将搜索基础设置为其专有名称,将搜索范围设置为“基础”并发出查询。

建议在您的应用程序中缓存查询结果以避免多次发出相同的 LDAP 查询(以防您连续检索多个对象的 memberOf)。

示例代码( right off the MSDN ,仅稍作修改):

string dn = "LDAP://CN=Group Name,ON=Groups,DC=fabrikam,DC=com";

// Bind to a specific group.
DirectoryEntry entry = new DirectoryEntry(dn);

// Create a DirectorySearcher object.
DirectorySearcher mySearcher = new DirectorySearcher(entry);
mySearcher.SearchScope = SearchScope.Base;
mySearcher.PropertiesToLoad.Add("displayName");

// Use the FindOne method to find the group object.
SearchResult resEnt = mySearcher.FindOne();

关于active-directory - DirectoryEntry memberOf 属性返回完整路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/829074/

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