【发布时间】:2014-02-02 20:32:15
【问题描述】:
我正在尝试用 C# 编写一个 Web 服务,它接受用户名和 AD 组名称,并返回 true 或 false 作为结果。现在我正在为此做一些事情。
public static Boolean CheckGroupForUser(String username, String groupname) {
Boolean Success = false;
try
{
using (PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Domain))
using (UserPrincipal user = UserPrincipal.FindByIdentity(oPrincipalContext, username))
using (GroupPrincipal gp = GroupPrincipal.FindByIdentity(oPrincipalContext, groupname))
{
Success = user.IsMemberOf(gp);
}
}
catch (Exception)
{
Success = false;
}
return Success;
}
这很好用。如果用户在组中,则返回 true,否则返回 false。问题是这样的。
假设我有一个名为 TestGroup 的 AD 组。 TestGroup 中有 1 个名为 Bob 的用户。
CheckGroupForUser("Bob","TestGroup"); //true
假设用户 Bob 也在 AD 组 OtherGroup 中。所以我把 Bob 带出 TestGroup,但将 OtherGroup 添加到 TestGroup。所以现在从技术上讲,Bob 是在 TestGroup,但不是直接的。
CheckGroupForUser("Bob","TestGroup"); //false
这是我需要帮助的地方。我需要这种情况是真实的。赶上我的漂移?有什么建议吗?
【问题讨论】:
标签: c# .net active-directory active-directory-group