1

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

这是怎么设置我的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> 

我还启用了Windows身份验证和ASP.NET Impersation我的IIS授权部分。 我试图用我的用户(我是EUser的成员)访问该应用程序,但它始终提示输入我的用户名和密码。我忘了什么吗?难道我做错了什么?

回答

3

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

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

[Authorize(Roles = "EUsers")] 
+1

有没有办法使用web.config? –

+0

为此使用web.config是错误的。您可以使用它,但这不是推荐的方法来控制ASP.NET MVC应用程序中的授权。 –

+0

我删除了授权部分并在我的控制器中使用[Authorize(Roles =“EUsers”)],但它仍然不起作用。我需要任何辅助配置吗? –

1

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

这里是解决权限冲突的一些规则:

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

优先级的权限的层次结构可以概括如下,具有较高优先级的权限在列表的顶部列出:

  1. 明确的拒绝
  2. 明确允许
  3. 继承拒绝
  4. 继承允许
+0

你知道解决方案来解决这个问题吗?我们如何强迫这个小组成为一个明确的允许?或者让这个团队对这个拒绝进行优先考虑?据我的理由,你想阻止所有用户(拒绝*),然后让安全组访问您的网站? – markwilde

+0

我相信,如果一个组未被明确允许,他们将无法访问。优先权规定某人是两个组的成员,一个被授予访问权,另一个被拒绝访问。这个人将被拒绝,但除非用户是明确授予访问权限的组成员,否则他们不应该有权访问。我认为答案是完全删除行,因为这会阻止任何人访问。 – Thronk

+1

啊,我想我知道我的错误是什么。我正在考虑将AD组添加到USERS而不是ROLES。那么用户将被授予隐式访问权限,并且拒绝(*)将优先。所以我的问题有点不同。感谢您的快速跟进! – markwilde

相关问题