我正在尝试使用AuthorizeAttribute在我的ASP.NET MVC 4 Intranet Web应用程序中实现基于Active Directory角色的授权。
[Authorize(Roles = "CONTOSO\\G_Helpdesk")]
public ActionResult Index() {
return View();
}
这应该只允许组CONTOSO \ G_Helpdesk的成员能够查看索引页面。我的开发虚拟机和Web服务器都是 NOT域成员。所以我认为我应该配置一个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组成员的活动目录用户登录。事实上我根本无法登录。当我将属性更改为以下行时,我可以使用本地帐户登录。
[Authorize]
public ActionResult Index() {
return View();
}
AuthorizeAttribute是否甚至使用成员资格提供程序?我认为完全无视它。
答案 0 :(得分:3)
我发现我没有想出正确的方向。在使用Windows身份验证时,我无法使用AD凭据从独立的Web服务器进行身份验证。 Source
我有两个选择。
我希望这个答案可以挽救那些在同一时间遇到同样问题的人。