gpt4 book ai didi

c# - 如何在 Active Directory 中查找 IdentityReference?

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

我正在尝试读出有权阅读文档的用户。我已经可以连接到目录并读出身份引用,但现在我想在 Active Directory 中查找 ID 并从该 ID 中读出名称。

DirectorySecurity ds = Directory.GetAccessControl(path);
AuthorizationRuleCollection arc = ds.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
foreach (FileSystemAccessRule fsar in arc)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("Identity : " + fsar.IdentityReference.Value);


sb.AppendLine("FileSystemRights : " + fsar.FileSystemRights);
+ fsar.PropagationFlags);


Console.WriteLine(sb.ToString());

我已经可以连接到 AD 服务器,现在我想使用 DirectorySearcher 搜索 IdentityReference。

 System.DirectoryServices.DirectoryEntry entry = new System.DirectoryServices.DirectoryEntry(@"LDAP://mydomain.local/");
entry.Username = username;
entry.Password = password;

System.DirectoryServices.DirectorySearcher mySearcher = new System.DirectoryServices.DirectorySearcher(entry);

mySearcher.Filter = "(......)"; //searching for IdentityReference

我该怎么做?

顺便说一句:我是 C# 初学者,非常感谢每一个答案。

最佳答案

如你所见here , 身份引用是 SID (S-1-2-3434-1234243...) 或 NT 帐户名 (DOMAIN\john.doe)。这些可以通过 Translate 方法相互翻译,因此您可以使用其中任何一个。决定你喜欢哪一个并进行翻译。引用文献是否已经采用该格式并不重要,始终进行翻译更容易,而且您可以确定它会是您喜欢的任何格式。

要根据这些属性之一查找用户,我建议使用 PrincipalContext.FindByIdentity方法。它支持 SID 和登录名查找等,并且比 LDAP 过滤器容易得多。

当然,如果您愿意,您可以编写一个 LDAP 过滤器。我不确定登录名,因为它没有以那种格式直接存储在 AD 中,但是如果你为 objectSid 属性编写查询,你肯定可以搜索 SID,比如 (objectSid=S-1-2-3434...)

关于c# - 如何在 Active Directory 中查找 IdentityReference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21578483/

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