[英]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.