【发布时间】: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