我正在尝试使用 AuthorizeAttribute 在我的 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>
现在问题来了。我无法使用属于 CONTOSO\G_Helpdesk 组成员的 Active Directory 用户登录。事实上,我根本无法登录。当我将属性更改为以下行时,我可以使用本地帐户登录。
[Authorize]
public ActionResult Index() {
return View();
}
AuthorizeAttribute 甚至使用成员资格提供程序吗?我认为它完全忽略了它。