![](/img/trans.png)
[英].NET OWIN Authentication - Cookie + Windows (active directory)
[英]Windows Authentication with Active Directory Groups
我有一個小項目,使用Visual Studio 2013,.NET 4.5,MVC 5和EF 6構建。我使用Windows身份驗證創建它,但現在我需要檢查Active Directory組中的成員身份以允許或拒絕訪問。
我已經走了許多非常深的兔子洞,試圖找出如何做到這一點。 起初我假設我需要更改項目以使用“內部部署”身份驗證。 但是,我發現:
因此,假設#3是真的,我嘗試閱讀關於此的大量帖子,但它們似乎分為兩個基本組:
假設#1是要走的路,這是我最近的嘗試。
在我的控制器中,我有:
[Authorize(Roles=@"SomeDomain\\SomeGroup")]
public class SomeController : Controller
在我的Web.config文件中,我有:
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
<providers>
<clear/>
<add name="AspNetWindowsTokenRoleProvider"
type="System.Web.Security.WindowsTokenRoleProvider"
applicationName="/" />
</providers>
</roleManager>
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="BehaviorConfiguration">
<serviceAuthorization
principalPermissionMode="UseAspNetRoles"
roleProviderName="AspNetWindowsTokenRoleProvider" />
<serviceMetadata />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
當我嘗試訪問該頁面時,我被提示登錄。 輸入我的登錄ID和密碼后,我繼續收到登錄提示。 我不被允許進入該頁面。
我在任何地方都沒有告訴我的應用程序Active Directory服務器的位置,但我得到的印象是Windows已經知道(因為,當我登錄到Windows時,它訪問Active Directory服務器來驗證我)。
我錯過了什么嗎? 或者我錯誤地認為可以在不編寫自定義代碼的情況下完成此操作?
警告:我對來自Java世界的.NET,MVC等相當新,所以請使用小詞。 :-)
我發現了這個問題。 我上面的內容是正確的,除了我在域名和角色名稱之間有兩個反斜杠,而不是一個。 修復只是將其更改為:
[Authorize(Roles=@"SomeDomain\SomeGroup")]
您還可以在App_Start文件夾中的RegisterGlobalFilters中將其設置為過濾器。
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
if (filters == null)
{
throw new ArgumentNullException("filters");
}
filters.Add(new HandleErrorAttribute());
var authorizeAttribute = new AuthorizeAttribute
{
Roles = "Domain\Group" // Role = group in Active Directory
};
filters.Add(authorizeAttribute);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.