奇怪的IIS Windows身份验证行为

时间:2010-01-04 17:07:41

标签: asp.net web-services authentication iis-6

我在IIS 6.0中设置相同的两台服务器上运行ASP.NET 3.5 Web服务(旧学校SOAP,而不是WCF)。身份验证/访问控制设置如下:

  • 启用匿名访问=错误
  • 集成Windows身份验证= True
  • Windows域服务器的摘要式身份验证= False
  • 基本身份验证= False
  • .NET Passport身份验证= False

在其中一种Web方法中,我需要获取请求用户的身份并验证它是否在某个Active Directory组中。因此,Web方法中的第一行代码是:

var requestUser = HttpContext.Current.Request.LogonUserIdentity.Name;

由于某种原因,两台服务器之间的结果不同。 Server1按预期工作,生成domain\UserId。但是,Server2生成Server2\IUSR_SERVER2。有谁之前经历过这个吗?我找到this question,但我很确定它不适用于客户端,两个服务器都在同一个域中。

其他信息

根据Heinzi的回复,我将以下内容添加到两个web.config文件中的<system.web>部分:

<authorization>
    <deny users="?" />
    <allow users="*" />
</authorization>

现在,Server1的行为相同,因为它的行为与我想要的一样。但是,Server2抛出401.2:Unauthorized错误:

应用程序中的服务器错误。

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

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

版本信息:Microsoft .NET Framework版本:2.0.50727.3603; ASP.NET版本:2.0.50727.3053

5 个答案:

答案 0 :(得分:9)

当我第一次尝试构建项目时,我正在创建一个新的MVC 4 ASP.NET Web应用程序并遇到与您完全相同的错误(错误401.2)。

我在开发计算机上更改了IIS管理器中的选项以禁用匿名身份验证并启用Windows身份验证,但我仍然收到401.2错误。

我做了一些研究,发现我可以更改项目的属性并解决此错误。

  

解决方案资源管理器:

     
      
  • 选择您的项目
  •   
  • 按F4显示“属性窗口”
  •   
     

属性窗口:

     
      
  • 将“匿名身份验证”更改为“已禁用”
  •   
  • 将“Windows身份验证”更改为“已启用”
  •   

如果没有解决您的具体问题,我希望这有助于其他人。只要您在Web服务器上具有相同的设置,它就应该按预期工作。

答案 1 :(得分:2)

在Server2上的web.config中,你有:身份验证模式=“Windows”吗?

答案 2 :(得分:2)

由于IUSR_*是默认的匿名用户,并且在IIS中禁用了匿名访问,因此听起来在您的web.config中启用了匿名访问。请确保web.config中的authorization部分与此类似:

<authorization>
    <deny users="?" /> <!-- Reject anonymous users -->
    <allow users="*" /> <!-- Accept all other users (or replace * with a list of users) -->
</authorization>

答案 3 :(得分:1)

我在虚拟服务器上遇到了与IIS7相同的问题,我的登录指向一个名为“content”的文件夹。在我的网络配置中,有一个包含表单验证设置的“位置”部分。但是我正在为Windows身份验证进行设置,所以当IIS点击我的内容文件夹时,它不知道要使用哪种身份验证,因此返回错误。从配置中删除它后它工作正常:

<location path="content">
    <system.web>
        <authorization>
            <deny users="?" />
            <allow users="*" />
        </authorization>
    </system.web>
</location>

由于

答案 4 :(得分:0)

不幸的是,我从来没有找到这个问题的根源。我们最终转移到新的服务器并且两者都有新的IIS配置,这个问题就消失了。我怀疑它可能与在服务器上设置NIC的方式有关,因为它是具有多个NIC的虚拟服务器。但我还是不确定。再次感谢Heinziconsultutah的帮助。