ASP.NET MVC 4 AuthorizeAttribute和ActiveDirectoryMembershipProvider

ASP.NET MVC 4 AuthorizeAttribute和ActiveDirectoryMembershipProvider,asp.net,asp.net-mvc-4,Asp.net,Asp.net Mvc 4,我正在尝试使用authorized属性在我的ASP.NET MVC 4 Intranet Web应用程序中实现基于Active Directory角色的授权 [Authorize(Roles = "CONTOSO\\G_Helpdesk")] public ActionResult Index() { return View(); } 这应该只允许CONTOSO\G_Helpdesk组的成员查看索引页。我的开发虚拟机和Web服务器都不是域成员。所以我想我应该配置一个ActiveDirec

我正在尝试使用authorized属性在我的ASP.NET MVC 4 Intranet Web应用程序中实现基于Active Directory角色的授权

[Authorize(Roles = "CONTOSO\\G_Helpdesk")]
public ActionResult Index() {
   return View();
}
这应该只允许CONTOSO\G_Helpdesk组的成员查看索引页。我的开发虚拟机和Web服务器都不是域成员。所以我想我应该配置一个ActiveDirectoryMembershipProvider。我的web.config如下所示

<authentication mode="Windows"/>
<authorization>
  <deny users="?"/>
</authorization>

<membership defaultProvider="ADMembershipProvider">
  <providers>
    <add name="ADMembershipProvider"
      type="System.Web.Security.ActiveDirectoryMembershipProvider,
      System.Web, Version=2.0.0.0, Culture=neutral,
      PublicKeyToken=b03f5f7f11d50a3a"
      connectionStringName="ADService"
      connectionUsername="CONTOSO\User"
      connectionPassword="myPassword"
      attributeMapUsername="sAMAccountName"/>
  </providers>
</membership>

<connectionStrings>
  <add name="ADService" connectionString="LDAP://dc1/DC=CONTOSO,DC=com" />
</connectionStrings>

authorized属性是否使用成员资格提供程序?我认为它完全忽略了这一点。

我发现我的思维方向不对。在使用Windows身份验证时,我将无法使用AD凭据从独立Web服务器进行身份验证

我有两个选择

  • 使Web服务器成为域的成员
  • 使用表单身份验证

我希望这个答案能帮那些在同一问题上挣扎的人节省一些时间。

我认为你不需要
connectionUsername
中的
CONTOSO
部分,而只是尝试使用用户名。不幸的是,这不起作用。我的猜测是会员资格提供者根本没有被使用。有没有办法记录/调试这个?
[Authorize]
public ActionResult Index() {
   return View();
}