为什么UserPrincipal.GetAuthorizationGroups()对一个主体而不是另一个主体失败?

时间:2014-11-10 17:41:55

标签: c# asp.net-mvc active-directory

我在ASP.Net MVC网站上运行以下代码:

  using (var ctx = new PrincipalContext(ContextType.Domain, DOMAIN))
  using (var userPrincipal = UserPrincipal.FindByIdentity(ctx, principal.Identity.Name))
  using (var groups = userPrincipal.GetAuthorizationGroups())

代码使用自定义RoleProvider,变量“principal”是HttpContext.Current.User。 DOMAIN是我的本地域名。

当我登录网站时此代码正常工作,但如果我以几个测试用户之一登录,则会在最后一行引发异常。

While trying to retrieve the authorization groups, an error (5) occurred.

测试用户对域的权限较少,但是是活动目录中的用户。我尝试使用提供用户名和密码的替代构造函数创建PrincipalContext,但它对行为没有任何影响。

这在我的开发机器上以及在单独的登台服务器上都会发生,所以我认为它与本地权限没有任何关系。我也没有看到它如何与用户的权限相关,因为我希望在IIS App Pool用户(模拟被关闭)或者可能是在PrincipalContext构造函数中指定的用户进行活动目录请求。 / p>

关于感恩内容的任何建议。

1 个答案:

答案 0 :(得分:3)

他们是Active Directory中的用户是不够的。 IIS应用程序池用户需要是Windows授权访问组的成员才能执行GetAuthorizationGroups。

在这里回答:While trying to retrieve the authorization groups, an error (5) occurred