我有一个在启用了 Windows 身份验证的 Web 服务器上运行的 ASP.NET Web API 服务。
我有一个基于 MVC4 构建的客户端站点,该站点在使用 HttpClient 从服务中提取数据的同一 Web 服务器上的不同站点中运行。此客户端站点在启用身份模拟的情况下运行,并且还使用 Windows 身份验证。
Web 服务器是带有 IIS 7.5 的 Windows Server 2008 R2。
我面临的挑战是让 HttpClient 将当前 Windows 用户作为其身份验证过程的一部分传递。我以这种方式配置了 HttpClient:
var clientHandler = new HttpClientHandler();
clientHandler.UseDefaultCredentials = true;
clientHandler.PreAuthenticate = true;
clientHandler.ClientCertificateOptions = ClientCertificateOption.Automatic;
var httpClient = new HttpClient(clientHandler);
我的理解是,在启用身份模拟的情况下运行站点,然后以这种方式构建客户端应该会导致客户端使用当前登录用户的模拟身份对服务进行身份验证。
这没有发生。事实上,客户端似乎根本没有进行身份验证。
该服务配置为使用 Windows 身份验证,这似乎工作得很好。我可以在我的网络浏览器中访问http://server/api/shippers并被提示进行 Windows 身份验证,一旦进入我就会收到请求的数据。
在 IIS 日志中,我看到在没有身份验证的情况下收到 API 请求并收到 401 质询响应。
关于这个的文档似乎很少。
我需要深入了解在此应用程序中使用 Windows 身份验证可能出现的问题或其他方式。
谢谢你,克雷格