这是我想要实现的目标:我有一个大约 5 层深的嵌套 OU 结构。
OU=Portal,OU=Dev,OU=Apps,OU=Grps,OU=Admin,DC=test,DC=com
我试图找出用户是否在 OU=Portal 上具有权限/存在。
这是我目前拥有的一个片段:
PrincipalContext domain = new PrincipalContext(
ContextType.Domain,
"test.com",
"OU=Portal,OU=Dev,OU=Apps,OU=Grps,OU=Admin,DC=test,DC=com");
UserPrincipal user = UserPrincipal.FindByIdentity(domain, myusername);
PrincipalSearchResult<Principal> group = user.GetAuthorizationGroups();
由于某些未知原因,user
上述代码生成的值始终为空。但是,如果我要删除所有 OU,如下所示:
PrincipalContext domain = new PrincipalContext(
ContextType.Domain,
"test.com",
"DC=test,DC=com");
UserPrincipal user = UserPrincipal.FindByIdentity(domain, myusername);
PrincipalSearchResult<Principal> group = user.GetAuthorizationGroups();
这可以正常工作并返回正确的用户。我只是想减少结果的数量,而不是从 AD 中获取所有内容。
有什么我做错了吗?我已经用谷歌搜索了几个小时并测试了各种组合,但运气不佳。