查询活动目录以获取用户在.NET中的角色

时间:2011-06-06 01:37:22

标签: .net active-directory ldap

我一直在使用Linq to Active Directory但我发现很难获得用户所属的所有角色的列表。我可以检索他们的直接组的列表,但它不是递归的。

我尝试查询AD目录的原因是解决内置的角色管理器AspNetWindowsTokenRoleProvider,它不允许您调用Roles.GetRolesForUser(用户名),除非用户名与当前的Windows身份匹配。

2 个答案:

答案 0 :(得分:19)

如果您使用的是.NET 3.5及更高版本,则应查看System.DirectoryServices.AccountManagement(S.DS.AM)命名空间。在这里阅读所有相关内容:

Managing Directory Security Principals in the .NET Framework 3.5

基本上,您可以定义域上下文并轻松在AD中查找用户和/或组:

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");

if(user != null)
{
   // find the roles....
   var roles = user.GetAuthorizationGroups();

   // enumerate over them
   foreach (Principal p in roles)
   {
       // do something
   }
}

新的S.DS.AM使得在AD中使用用户和群组变得非常容易:

答案 1 :(得分:1)

你看过this吗?