我想在某个计算机上使用 Windows 集成身份验证进行身份验证单控制器动作而不是全局应用程序。我在网上和StackOverflow上阅读了很多文章,但没有找到答案。请注意,我正在 Web API 2.0 中进行开发,而不是 MVC。
也就是说,通常要在整个应用程序上启用 Windows 身份验证,您需要执行类似的操作Web API 文档描述 http://www.asp.net/web-api/overview/security/integrated-windows-authentication:
<system.web>
<authentication mode="Windows" />
</system.web>
在幕后,我不确定这到底是做什么的,但我怀疑我可以通过实施在单个控制器操作上复制它身份验证过滤器 https://msdn.microsoft.com/en-us/library/system.web.http.filters.iauthenticationfilter.aspx as Web API 文档描述 http://www.asp.net/web-api/overview/security/authentication-filters。但是,我还没有找到结论性文章来解释如何针对 Windows 集成身份验证执行此操作。
我的目标示例:
归根结底,我希望我的单个 Web API 接受来自配置为在以下任一客户端场景中使用 Windows 身份验证的客户端的请求:
C#
var handler = new HttpClientHandler()
{
UseDefaultCredentials = true
};
var client = new HttpClient(handler);
Browser
$.ajax({
url: 'api/testauthentication',
type: 'GET',
dataType: 'json',
xhrFields: {
withCredentials: true
}
})
Edit #1
值得注意的是,我想以编程方式完成上述操作,而不是通过 web.config、IIS 设置等配置文件。另外,我正在使用欧文主持 http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api我的服务器上的应用程序。