【问题标题】:integrating active directory group with windows authentication aspnet mvc 3将活动目录组与 Windows 身份验证 aspnet mvc 3 集成
【发布时间】:2012-09-24 12:56:09
【问题描述】:

我在 mvc 3 应用程序中使用 Windows 身份验证,并且我只想让我的一些活动目录组访问此应用程序。我没有在我的控制器中使用 [Authorize] 属性,只是我的 web.config 配置。

这就是我设置 web.config 的方式:

  <system.web>
    <authentication mode="Windows" />
    <authorization>
    <allow roles="EUsers" />
        <deny users="*" />
    </authorization>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
    <security>
        <authorization>
            <add accessType="Allow" roles="EUsers" />
            <add accessType="Deny" users="*" />
        </authorization>
    </security>
  </system.webServer>

我还在我的 IIS 授权部分启用了 Windows 身份验证和 ASP.NET 模拟。 我正在尝试使用我的用户(并且我是 EUusers 的成员)访问该应用程序,但它总是提示我输入用户名和密码。我是不是忘记了什么?我是不是做错了什么?

【问题讨论】:

    标签: asp.net-mvc active-directory iis-7.5 windows-authentication windows-server-2008-r2


    【解决方案1】:

    我没有在我的控制器中使用 [Authorize] 属性,只是我的 web.config 配置。

    这完全是错误的。在 ASp.NET MVC 应用程序中,您不应使用 web.config 来控制授权。您应该使用[Authorize] 属性。所以:

    [Authorize(Roles = "EUsers")]
    

    【讨论】:

    • 没有办法使用 web.config 吗?
    • 为此使用 web.config 是错误的。您可以使用它,但这不是在 ASP.NET MVC 应用程序中控制授权的推荐方法。
    • 我删除了授权部分并在我的控制器中使用了 [Authorize(Roles = "EUsers")],但它仍然无法正常工作。我需要任何其他配置吗?
    【解决方案2】:

    我在评论部分看到它仍然无法正常工作。我相信这可能是“拒绝”被明确分配给用户=“*”和权限优先规则的结果

    以下是解决权限冲突的一些规则:

    “拒绝”权限通常优先于“允许”权限。 直接应用于对象的权限(显式权限)优先于从父级(例如从组)继承的权限。 从近亲继承的权限优先于从远亲继承的权限。因此,从对象的父文件夹继承的权限优先于从对象的“祖父”文件夹继承的权限,依此类推。 来自同一级别的不同用户组的权限(直接设置或继承,以及“拒绝”或“允许”)是累积的。因此,如果用户是两个组的成员,其中一个具有“读取”的“允许”权限,而另一个具有“写入”的“允许”权限,则该用户将具有读取和写入权限-取决于当然,上面的其他规则。 尽管拒绝权限通常优先于允许权限,但情况并非总是如此。明确的“允许”权限可以优先于继承的“拒绝”权限。

    权限的优先级层次结构可以总结如下,优先级较高的权限列在列表顶部:

    1. 明确拒绝
    2. 显式允许
    3. 继承拒绝
    4. 继承允许

    【讨论】:

    • 你知道解决问题的方法吗?我们如何强制该组成为显式允许?还是让小组优先于拒绝?据我所知,您想阻止所有用户(拒绝 *),然后允许安全组访问您的网站?
    • 我相信,如果一个组没有被明确允许,他们将无权访问。优先级规则某人是两个组的成员的情况,一个已被授予访问权限,另一个已被拒绝访问。此人将被拒绝,但除非用户是明确授予访问权限的组的成员,否则他们不应拥有访问权限。我认为答案是完全删除 行,因为这将阻止任何人访问。
    • 啊,我想我知道我的错误是什么了。我正在考虑将 AD 组添加到用户而不是角色。那么用户将被授予隐式访问权限,并且拒绝(*)将优先。所以我的问题有点不同。感谢您的快速跟进!
    猜你喜欢
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 2012-01-13
    • 2011-10-08
    相关资源
    最近更新 更多