我想通過使用AuthorizeAttribute在ASP.NET MVC 4 Intranet Web應用程序中實現基於Active Directory角色的授權。ASP .NET MVC 4 AuthorizeAttribute和ActiveDirectoryMembershipProvider
[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組的成員的活動目錄用戶進行登錄。實際上我根本無法登錄。當我將屬性更改爲下面的行時,我可以使用本地帳戶登錄。
[Authorize]
public ActionResult Index() {
return View();
}
是否AuthorizeAttribute甚至使用會員的供應商?我認爲它完全忽略了它。
我不認爲你需要'connectionUsername'中的'CONTOSO'部分,而不是隻使用用戶名。 – SOfanatic
不幸的是,這是行不通的。我的猜測是會員提供商根本沒有使用。有什麼方法可以記錄/調試嗎? – Menno