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