我有一个多域活动目录环境,需要根据DOMAIN \ username找到用户。
以下代码非常适合通过SID查找用户。
DirectorySearcher directorySearcher = new DirectorySearcher(new DirectoryEntry(
"GC://" + Forest.GetCurrentForest().Name));
directorySearcher.Filter =
"(&" +
(&(objectCategory=person)(objectClass=user)) +
"(objectSid=" + this.SID + "))";
var result = directorySearcher.FindOne();
但现在我遇到的情况是我所拥有的是DOMAIN \用户名。
过滤器的内容是什么?
我考虑的一种方法是连接到特定域而不是全局编录,并通过不合格的SAMAccountName进行搜索。但我的问题是我不知道如何从DOMAIN到DC = Domain,DC = Org或domain.org。
当我在Active Directory用户和计算机中时,通过DOMAIN \ username搜索整个目录似乎没有问题。幕后发生了什么?
答案 0 :(得分:2)
这是缺失的部分。
using System.Security.Principal;
var sid = (SecurityIdentifier)new NTAccount(userName).Translate(
typeof(SecurityIdentifier));