如何从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();
答案 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中,事情变得更加混乱......