我有以下带有两棵树的 AD 森林:
- 域 1。有两个子域 Domain2 和 Domain3
- 域 4。没有子域。
Domain1 的 DNS 名称是domain1.local。Domain4 的 DNS 名称是domain4.local。
在每个域中都有一个启用了全局编录的域控制器。
我正在尝试通过其 SID 从域 4 中获取用户的 UserPrincipal。该程序从 Domain2 中的机器运行。
我使用以下代码:
// Running on some machine from Domain2
PrincipalContext context = new PrincipalContext(
ContextType.Domain,
"dc2.domain2.domain1.local:3268", // Using Global Catalog port and local domain controller
"DC=domain1, DC=local", // I guess the problem is here
"domain1\\super-admin", // User has all necessary rights across all domains
"password");
UserPrincipal principal = UserPrincipal.FindByIdentity(context, "SID-OF-A-USER-FROM-DOMAIN-4");
在我的情况下,主体为空(未找到用户)。
在上面的代码片段中搜索一棵树(domain1 及其子节点)可以正常工作,但我不知道如何修改 PrincipalContext 构造函数的容器参数以真正启用森林范围的搜索。
最初我以为“DC=domain1,DC=local”指向林根,但似乎我在这里有误解。
而且我知道,如果我将容器路径更改为“DC=domain4,DC=local”,那么搜索将起作用,但仅适用于 domain4 中的用户。
但我真的需要这样一个指向整个森林的容器路径,这样我就可以使用相同的 PrincipalContext 从森林中的任何域搜索用户。
任何帮助表示赞赏,特别是如果有人可以澄清我的要求是否可以实现。