使用Windows身份验证与Active Directory组为角色(using windows a

2019-07-04 18:09发布

我读过关于这一主题的几个问题,比如这里 , 这里 , 这里和这里 ; 但都没有提供在我的情况下工作的解决方案。

我想做的事:

为实现网络应用程序,仅由我们自己的员工Windows身份验证。 这样,他们不应该需要登录到应用程序,但已经已经登录到窗口的方式进行身份验证。

另外,我需要基于Active Directory安全组,用户可以被分配到以限制应用程序的某些区域。

所以,我希望能够装点控制器/操作与

[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”的一部分。

我对这个话题寻找最一切让这听起来很容易做到我想要做的,但我清楚地失去了一些东西。

Answer 1:

对于开发我使用IISExpress与MVC项目设置,以便匿名身份验证是残疾人和Windows认证功能的开发服务器性能。 web配置是使用我们的TFS构建服务器来测试和释放其认证也设置如上,并在这些地点的作品,以及服务器部署。

在我的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组应用。



文章来源: using windows authentication with active directory groups as roles