401.2无效的身份验证标头 - 由Fiddler修复

时间:2017-02-09 21:02:52

标签: .net iis asp.net-web-api2

我有一个Web Api 2服务和一个javascript网站。两者都托管在内部客户端的内部IIS服务器上。我需要能够通过Windows身份验证将Windows用户从站点升级到服务。

当我浏览Chrome中的服务元数据操作时(例如:http://theServer.domain.net/myController/metadata),我会得到正确的结果以及用户信息。

但是当我尝试在我的应用程序中加载该数据时,我收到以下错误:

  

401.2由于身份验证标头无效,您无权查看此页面。

但是,这只会在Chrome中失败。 IE 11加载它就好了。

这是我尝试/设置的内容:

  • 最常见的解决方法是确保为IIS启用了Windows身份验证。我已经仔细检查过这个问题。我的IIS网站都有Windows身份验证模块。

  • 我正在运行应用程序池(一个用于服务,一个用于站点)作为应用程序池标识安全性。我确保应用程序池可以访问磁盘上的文件。 (只是为了确定,我甚至尝试过将它们设置为以我身份运行。)

  • 我还在web.config中使用<authentication mode="Windows" />设置了我的网站。

  • 我的网站设置了Windows和匿名身份验证。我的服务仅针对Windows身份验证进行设置。

  • 在服务器和网站上都设置了Windows身份验证,以便唯一的提供程序是NTLM。

  • 在我打开的两个应用程序池上启用了32位应用程序。

由于这一切都没有起作用,我试图启动Fiddler以查看我是否可以查看标题并在较低级别进行调试。 但是一旦Fiddler运行,问题便消失了!错误消失了,服务器验证正确!但是,它只适用于小提琴手正在运行时。 (我试过阅读Help! Running Fiddler fixes my App,但我看不到任何有用的东西。)

所以,我的问题是,我需要做些什么才能使用Windows身份验证?(我需要用户信息。)

1 个答案:

答案 0 :(得分:1)

只有IE支持来自浏览器的Windows身份验证。

来自:https://technet.microsoft.com/en-us/library/cc754628(v=ws.10).aspx

  

Windows身份验证,包括NTLM和Kerberos v5   身份验证,最适合用于Intranet环境   原因如下:客户端计算机和Web服务器是相同的   域。

     
      
  • 管理员可以确保每个客户端浏览器都是Internet   Explorer 2.0或更高版本。

  •   
  • NTLM不支持的HTTP代理连接不是   必需的。

  •   
  • Kerberos v5需要连接到Active Directory,而不是   在互联网环境中可行。

  •   

关于提琴手 - 您是否启用了“自动验证”选项? https://stackoverflow.com/a/34851503/1165140