【发布时间】:2011-07-15 19:50:02
【问题描述】:
我有一个使用 ActiveDirecotry 授权的应用程序,并且已决定它需要支持嵌套的 AD 组,例如:
MAIN_AD_GROUP
|
|-> SUB_GROUP
|
|-> User
因此,该用户直接是MAIN_AD_GROUP 的成员。我希望能够递归查找用户,搜索嵌套在MAIN_AD_GROUP 中的组。
主要问题是我使用的是 .NET 3.5,而 .NET 3.5 中的 System.DirectoryServices.AccountManagement 存在一个错误,因此方法 UserPrincipal.IsMemberOf() 不适用于 超过 1500 个用户的组。所以我不能使用UserPrincipal.IsMemberOf(),不,我也不能切换到.NET 4。
我已经使用以下函数解决了最后一个问题:
private bool IsMember(Principal userPrincipal, Principal groupPrincipal)
{
using (var groups = userPrincipal.GetGroups())
{
var isMember = groups.Any(g =>
g.DistinguishedName == groupPrincipal.DistinguishedName);
return isMember;
}
}
但userPrincipal.GetGroups() 只返回用户是其直接成员的组。
如何让它与嵌套组一起使用?
【问题讨论】:
标签: c# .net-3.5 active-directory directoryservices