从Active Directory获取用户的组成员身份

时间:2009-12-29 10:53:38

标签: .net windows active-directory

如何从AD获取用户的组成员身份,最好使用与用于获取用户的Department属性相同的模式,如下所示?我找到了几个例子,但是所有示例技术的交叉集非常小,并且缺乏这个Department查询的紧密性和简单性:

        var adServer = ConfigurationManager.AppSettings["adServer"] ?? "localhost";
        var remoteRoot = new DirectoryEntry(GetRootPath(adServer));
        var searcher = new DirectorySearcher(remoteRoot, string.Format("(SAMAccountName={0})", shortUserName));

        searcher.PropertiesToLoad.Add("Department");
        SearchResult result = null;
        result = searcher.FindOne();

1 个答案:

答案 0 :(得分:6)

您使用的是.NET 3.5吗?如果是这样,那很简单:

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN");

string userName = "yourUser";

UserPrincipal user = UserPrincipal.FindByIdentity(ctx, userName);

PrincipalSearchResult<Principal> results = user.GetAuthorizationGroups();

找到您的用户,然后调用您的用户主体上的.GetAuthorizationGroups() - 返回用户所属的所有组,包括他的主要组和任何嵌套的组成员身份。

在处理AD时,请查看此MSDN article以获取.NET 3.5中的更多新功能。

在.NET 2.0中,事情变得更加混乱......