这是我想要实现的目标: 我有一个大约 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
始终为 null。但是,如果我按如下方式删除所有 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 获取所有内容。
我做错了什么吗?我用 Google 搜索了几个小时并测试了各种组合,但运气不佳。
最佳答案
好吧,如果
UserPrincipal.FindByIdentity(context, identityType, username) == null
然后没有找到用户,在你的情况下可能是,因为用户没有在 OU 中定义=你在你的上下文中设置为容器。
关于c# - 将 UserPrincipal.FindByIdentity 和 PrincipalContext 与嵌套 OU 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12617143/