[英]using windows authentication with active directory groups as roles
我已經閱讀了關於這個主題的幾個問題,比如這里 , 這里 , 這里和這里 ; 但在我的案例中沒有一個提供了有效的解決方案。
我想做的事:
為僅由我們自己的員工使用的Web應用程序實施Windows身份驗證。 這樣他們就不需要登錄應用程序,但已經通過登錄Windows進行身份驗證。
此外,我需要根據用戶可能分配到的Active Directory安全組來限制應用程序的某些區域。
所以我希望能夠裝飾Controllers / Actions
[Authorize(Roles="SomeRole")]
我嘗試過的:
我有
<authentication mode="Windows" />
在我的web.config中。 我添加了一些<roleManager>
排列,如上面鏈接的一些帖子中所示。 目前我有這個角色經理
<roleManager defaultProvider="WindowsProvider"
enabled="true"
cacheRolesInCookie="false">
<providers>
<add
name="WindowsProvider"
type="System.Web.Security.WindowsTokenRoleProvider" />
</providers>
</roleManager>
在這篇文章中找到。
事實上,如果我用[Authorize]
裝飾一個控制器,我可以很好地訪問它。
然而:
我可以在網絡上的用戶設置中看到,我是名為“IT”的AD安全組的成員。 但是,如果我使用[Authorize(Roles="IT")]
裝飾相同的控制器,我將獲得由asp.net開發服務器為未經授權的401服務的空白屏幕。 這是出乎意料的。 我認為我應該能夠查看頁面,因為我登錄到Windows並且是“IT”組的一部分。
我在這個主題上發現的大部分內容都讓我覺得很難完成我想要做的事情,但我在這里顯然遺漏了一些東西。
對於開發人員,我使用IISExpress與MVC項目的開發服務器屬性設置,以便禁用匿名身份驗證並啟用Windows身份驗證。 使用我們的TFS構建服務器部署Web配置,以測試和釋放服務器,其身份驗證也如上所述,並且也在這些位置工作。
在我的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>
我可以用
[Authorize(Roles = @"DOMAIN\ADGroup")]
Public ActionResult Index()
{...}
要么
public ActionResult Index()
{
var User = System.Web.HttpContext.Current.User;
if (User.IsInRole("DOMAIN\\ADGroup"))
{
return RedirectToAction("IRSAdmin");
}
return View();
}
在我記得注銷並重新登錄之后,應用了給予AD組的權限。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.