【问题标题】:401.2 Invalid Authentication Headers - Fixed by Fiddler401.2 无效的身份验证标头 - 由 Fiddler 修复
【发布时间】:2017-06-28 01:25:24
【问题描述】:

我有一个 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 身份验证一起使用?(我需要用户信息。)

【问题讨论】:

  • “javascript 网站”是什么意思?这是如何配置的?由于您在直接访问服务 URL 时正确检索了凭据,因此您的问题很可能出在您网站的配置上
  • 这是一个使用 Aurelia 和 Typescript 创建的 SPA。
  • 没有后端?

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


【解决方案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

【讨论】:

    猜你喜欢
    • 2014-03-03
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 2015-09-09
    • 2020-10-21
    • 2012-03-18
    相关资源
    最近更新 更多