代码之家  ›  专栏  ›  技术社区  ›  AJ.

奇怪的IIS Windows身份验证行为

  •  7
  • AJ.  · 技术社区  · 15 年前

    我有一个ASP.NET 3.5 Web服务(老式的SOAP,而不是WCF)运行在两个在IIS6.0中相同设置的服务器上。身份验证/访问控制设置如下:

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

    在其中一个Web方法中,我需要获取请求用户的标识,并验证它是否在某个Active Directory组中。所以,web方法中的第一行代码是:

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

    由于某种原因,两台服务器的结果不同。server1按预期工作,生成 domain\UserId . 但是,server2产生 Server2\IUSR_SERVER2 . 以前有人经历过吗?我确实找到了 this question 但是我很确定它不适用于客户机,而且两个服务器都在同一个域中。

    附加信息

    根据Heinzi的回答,我在 <system.web> 两个web.config文件中的节:

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

    现在,server1的行为与中的相同,它的行为与我想要的一样。但是,Server2抛出了401.2:未经授权的错误:

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

    访问被拒绝。 描述:访问服务此请求所需的资源时出错。服务器可能没有配置为访问请求的URL。

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

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

    5 回复  |  直到 12 年前
        1
  •  9
  •   cmann83    12 年前

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

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

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

    解决方案资源管理器:

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

    属性窗口:

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

    我希望这能帮助其他人,如果它不能解决你的具体问题。只要您的Web服务器上有相同的设置,它就会按预期工作。

        2
  •  2
  •   ConsultUtah    15 年前

    在server2上的web.config中,是否有:authentication mode=“windows”?

        3
  •  2
  •   Heinzi    15 年前

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

    <authorization>
        <deny users="?" /> <!-- Reject anonymous users -->
        <allow users="*" /> <!-- Accept all other users (or replace * with a list of users) -->
    </authorization>
    
        4
  •  1
  •   cmckeown    13 年前

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

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

    谢谢

        5
  •  0
  •   Community CDub    7 年前

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