我有一个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获取当前用户组?
答案 0 :(得分:0)
我最终遇到了这个问题,因为我不小心让IIS网站的身份验证类型设置错误。我删除了“匿名身份验证”,并将其设置为只启用了“asp.net身份验证”和“Windows身份验证”,错误就消失了。