Authentication 带有Windows身份验证的WebAPI返回401个未经授权的

Authentication 带有Windows身份验证的WebAPI返回401个未经授权的,authentication,iis,asp.net-web-api,windows-authentication,Authentication,Iis,Asp.net Web Api,Windows Authentication,我正在设计一个WebAPI服务,它必须对客户端的广告服务器使用windows身份验证。我正在尝试在本地测试这个问题,并且不断地得到一个401错误,接着是由于无效的凭据,服务器根本不允许请求。我正在IIS 8.5 local(安装在windows 8.1设备上)中进行本地测试。在IIS中,我使用以下提供程序启用了Windows身份验证: NTLM 协商 协商:Kerberos 此外,我禁用了内核模式身份验证,因为当我同时启用内核模式和协商:kerberos时,IIS会对我大喊大叫。扩展保护也被

我正在设计一个WebAPI服务,它必须对客户端的广告服务器使用windows身份验证。我正在尝试在本地测试这个问题,并且不断地得到一个401错误,接着是由于无效的凭据,服务器根本不允许请求。我正在IIS 8.5 local(安装在windows 8.1设备上)中进行本地测试。在IIS中,我使用以下提供程序启用了Windows身份验证:

  • NTLM
  • 协商
  • 协商:Kerberos
此外,我禁用了内核模式身份验证,因为当我同时启用内核模式和协商:kerberos时,IIS会对我大喊大叫。扩展保护也被禁用

在我的配置中,我将授权规则设置为允许所有用户,并且身份验证模式设置为“无”:

有人能解释为什么每次我尝试访问API方法时都会遇到401挑战吗

提前谢谢


编辑: 我将
更改为Windows,但这没有帮助。我还从windows身份验证提供商中删除了NTLM,因为我的计算机不在域上,所以NTLM无法工作


我还通过fiddler观看了请求流,我能够看到一系列4个请求,每个请求都试图使用协商方法进行身份验证,并且似乎有kerberos票据被来回传递。

我今天遇到了同样的问题。我将Web API项目属性、匿名身份验证更改为启用,将Windows身份验证更改为禁用。而且它很有魅力

  <system.web>
    <authentication mode="None" />
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
[Authorize]
[RoutePrefix("api/Workorder")]
public class WorkorderController : ApiController
{
     ...
}