IIS7授权规则/配置 - 永久提示

时间:2010-12-08 15:24:21

标签: asp.net iis iis-7

我正在尝试使用.NET授权规则在IIS7中保护应用程序。

默认情况下,Web服务器允许所有用户访问(继承)。

我已经为这个应用程序目录添加了deny all users命令,以及特定用户的allow命令。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>
        <authorization>
            <allow users="myusername" />
            <deny users="*" />
        </authorization>
    </system.web>
</configuration>

我启用了Windows身份验证,我可以验证没有该行,我的REMOTE_USER是MYDOMAIN \ myusername。

但是,当我尝试拒绝所有用户时,系统会提示我使用典型的Windows域用户名/密码框。如果我输入用户名密码,则提示会再次返回3次,直到最后向我显示失败消息。 (我也试着无济于事)

查看事件查看器,看起来好像我的登录使用用户名和pw在审核中成功...并且为了进一步说明,我的帐户没有被锁定(如果我未能一遍又一遍地登录)。所以它好像我正在登录,但配置没有看到我输入的匹配登录信息。

以下是我看到的消息(即使使用localhost从服务器连接时):

**访问被拒绝。

描述:访问提供此请求所需的资源时发生错误。可能未配置服务器以访问请求的URL。

错误消息401.2。:未授权:由于服务器配置,登录失败。验证您是否有权根据您提供的凭据和Web服务器上启用的身份验证方法查看此目录或页面。有关其他帮助,请与Web服务器的管理员联系。**

4 个答案:

答案 0 :(得分:9)

首先,主要问题是IIS6中还包含IIS6授权,至少在我的情况下是默认的。首先,确保已安装IIS7授权。完整的指示可以在这里找到:

http://www.iis.net/ConfigReference/system.webServer/security/authorization

出现混淆是因为在IIS7中,应用程序菜单中有一个名为“.NET授权规则”的项目(在ASP.NET部分下)。这不是您想要的IIS7授权。为此,您必须确保已安装它(请参阅上面的链接),然后单击应用程序的IIS部分下的名为“授权规则”的链接

另一个值得一提的注意事项,如果您将以下配置放在适当位置:

<configuration>
  <system.webServer>
    <security>
      <authorization>
        <remove users="*" roles="" verbs="" />
        <add accessType="Deny" users="unknownname" />
        <add accessType="Allow" users="knownname" />
      </authorization>
    </security>
  </system.webServer>
</configuration>

这将导致每个人被拒绝。看来,如果您拒绝不存在的用户名或角色,则拒绝每个人。如果拒绝用户被识别,那么它可以正常工作。

另外,为*指定deny并允许某些用户不起作用,它将拒绝所有用户。您只需删除*用户(如上例所示),然后只允许您的目标受众。其他人在默认情况下都被拒绝。

答案 1 :(得分:1)

答案 2 :(得分:0)

您可以更改以下代码

<deny users="*" />
<allow users="myusername" />

答案 3 :(得分:0)

我花了4个小时尝试设置它(使用域名角色):)。最终的解决方案是在角色中使用域名:

`<system.web> 
   <authorization>
     <allow roles="DOMAINNAME\rolename" /> 
     <deny users="*" /> 
   </authorization>
</system.web>`