2010-08-01 39 views
3

我们正在使用相同的应用程序从IIS 6和.NET 3.5升级到IIS 7.5(Windows Server 2008 R2 Enterprise)。我无法让我们以前的IIS 6设置正常工作。IIS 7.5/ASP.NET - 匿名访问除一个目录以外的所有内容 - 如何?

在IIS 6下,我可以设置网站本身为IIS本身使用特定的域用户(例如ourdomain \ webuser)。这控制了对所有文件(包括HTML,图像等)的初始访问,并形成了最初的请求,该请求转到了ASP.NET页面,然后.NET引擎接管了.NET,而运行.NET的用户是另一个域用户(例如,我们的域\ dotnetuser)。然后,我们会为IIS用户mydomain \ webuser从一个文件夹中抽取所有NTFS权限(例如/ lockdown /)。每当有人试图访问该目录中的文件时,IIS都会说“无法访问,启动Windows身份验证访问”并提示他们输入凭据。这仍然导致任何底层.NET代码作为我们的域\ dotnetuser运行。

我很难让这个相同的设置在IIS 7.5下工作,并且确定这只是一些愚蠢的疏忽而已。它......想工作但不完全。以下是我所做的:

该站点的应用程序池设置为.NET Framework v2.0.50727,并选择“集成”作为受管流水线模式选项。然后,身份设置为我们的域\ dotnetuser,以便该池作为特定用户运行。

该网站设置为IIS>身份验证连接为“ourdomain \ webuser”,似乎都很好。麻烦的是当我去这个特殊/锁定/目录。我尝试将其设置为与IIS 6完全相同(只需从我们的域\ webuser中删除对该文件夹的访问权)。当我这样做,我得到的接入标准提示,但提供我的凭据后,我仍然得到:

 
Error message 401.3: You do not have permission to view this directory 
or page using the credentials you supplied (access denied due to Access 
Control Lists). Ask the Web server's administrator to give you access to 
'C:\ourwebsite\lockdown\default.aspx'. 

我的帐户是该计算机上的本地管理员组中(加上我是一个域管理员这里),并且Administrators组已被授予完全访问此文件夹的权限。我在应用程序事件查看器中将以下内容看作“信息”事件:

 
Event code: 4008 
Event message: File authorization failed for the request. 
Event time: 8/1/2010 8:45:18 AM 
Event time (UTC): 8/1/2010 12:45:18 PM 
Event ID: 0f8a5de692e74e67bb4e3c65a867586c 
Event sequence: 32 
Event occurrence: 1 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/1/ROOT-1-129251371048714102 
    Trust level: Full 
    Application Virtual Path:/
    Application Path: C:\ourwebsite\ 
    Machine name: TESTWEB3 

Process information: 
    Process ID: 3008 
    Process name: w3wp.exe 
    Account name: ourdomain\dotnetuser 

Request information: 
    Request URL: http://localhost/lockdown/default.aspx 
    Request path: /lockdown/default.aspx 
    User host address: ::1 
    User: ourdomain\myuser 
    Is authenticated: True 
    Authentication Type: Negotiate 
    Thread account name: ourdomain\dotnetuser 

此处有任何建议或想法?

回答

5

您可以使用该授权规则,只需创建要保护有以下内容的目录内的web.config:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <security> 
      <authorization> 
       <remove users="*" roles="" verbs="" /> 
       <add accessType="Deny" users="?" /> 
       <add accessType="Allow" roles="Administrators" /> 
      </authorization> 
     </security> 
    </system.webServer> 
</configuration> 

这将防止匿名用户访问,只允许从用户Admnistrators小组。你可以使用角色或用户。

+0

非常感谢您的建议。我已经把这个确切的内容放到文件夹中新创建的web.config中,它看起来没有完成任何事情(我觉得很奇怪)。如果我将该文件夹中的NTFS权限恢复为与站点中所有其他文件夹中的相同,我期望调用此web.config并阻止非管理员访问(即匿名的ourdomain \ webuser)。是否有一些其他配置设置可能需要应用,这可能会起作用? – 2010-08-02 19:36:20

+0

当您首先在服务器级别安装URL授权时,此功能会更好! http://www.iis.net/ConfigReference/system.webServer/security/authorization 谢谢! – 2010-08-03 17:24:14

1

在带有IIS 7.5的Windows Server 2008 R2上,您需要执行以管理员身份运行的Windows资源管理器,方法是右键单击它以获取管理员权限以修改该文件夹中的任何内容。将应用程序池标识添加到具有读取和执行权限的c:\ inetpub \ wwwroot ...文件夹的ACL中。

相关问题