适用于Windows用户的AD组

时间:2015-04-03 20:30:24

标签: c# asp.net asp.net-mvc windows-authentication directoryservices

我有一个asp.net MVC应用程序,配置为使用Windows身份验证。我正在尝试使用此方法从UserPrincipal获取组。

UserPrincipal.Current.GetGroups()

从Visual Studio运行时工作正常但在IIS上托管时失败。应用程序池配置为集成管道和网络服务标识。抛出以下错误:

  

无法将“System.DirectoryServices.AccountManagement.GroupPrincipal”类型的对象强制转换为“System.DirectoryServices.AccountManagement.UserPrincipal”。“

我尝试冒充代码

WindowsIdentity identity = (WindowsIdentity)HttpContext.Current.User.Identity;

using (WindowsImpersonationContext wic = identity.Impersonate())
{
     PrincipalContext context = new PrincipalContext(ContextType.Domain, "DOMAIN NAME");
     UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, "User Name");

}

FindByIdentity抛出错误。

  

000004DC:LdapErr:DSID-0C0906E8,注释:为了执行此操作,必须在连接上完成成功绑定。,data 0,v1db1

如何从AD获取当前用户组?

1 个答案:

答案 0 :(得分:0)

我最终遇到了这个问题,因为我不小心让IIS网站的身份验证类型设置错误。我删除了“匿名身份验证”,并将其设置为只启用了“asp.net身份验证”和“Windows身份验证”,错误就消失了。