我有一个ASP.NET WebApi SaaS应用程序,用户可以选择执行HTTP基本身份验证或Windows身份验证。
我的控制器根据某些查询字符串值知道是否执行基本HTTP身份验证或Windows身份验证。
public class MyController : ApiController
{
public IHttpActionResult Get(int id)
{
if (!User.Identity.IsAuthenticated)
{
if (id == 5) // do basic for this resource only
{
return new BasicAuthenticationChallenge();
}
return Unauthorized();
}
return Ok("hello world");
}
}
我目前对BasicAuthenticationChallenge
的实施只是返回401: Unauthorized
和WWW-Authenticate: Basic realm="api"
标题。
但是,由于启用了Windows身份验证,因此IIS决定附加NTLM和Negotiate标头,这会导致客户端无法理解响应。
... (response headers)
WWW-Authenticate: Basic realm="api"
WWW-Authenticate: NTLM
WWW-Authenticate: Negotiate
... (response headers)
在尝试进行基本身份验证时,如何让IIS停止向WebApi的401响应中添加标题?