Web API基本身份验证返回401

时间:2016-08-22 15:08:18

标签: authentication iis asp.net-web-api asp.net-web-api2

我使用基本身份验证和使用全局DelegatingHandler实现构建了一个web api服务,我将其连接到Web API GlobalConfiguration,以便从请求中提取用户名:密码凭据如果凭据映射到有效用户,则将IPrincipal挂钩到HttpContext。

我已经在localhost上彻底测试了我的api并且它工作正常,但是当在VPS上的IIS上托管时却不行。

我已经连接了VPS上的远程调试,以便检查正在进行的事情,事实证明每当我将授权标头包含在我的请求中时,我在消息处理程序上设置的断点都没有被命中,这意味着请求没有到达处理程序。如果我从请求中删除了Authorization标头,那么断点就会被触发,处理程序就能够处理它。

由于消息处理程序是第一个将在管道中处理请求的消息(从我所知道的,如果我错了就纠正我)我想必须有一个我不知道的IIS或安装问题这会影响身份验证过程。

Fiddler请求标题

GET http://myip/api/v1/route/parameter HTTP/1.1
Content-Type: application/json; charset=utf-8
Authorization: Basic ZHJpdmVyOjEwMTAyMDAz
Host: myip

Fiddler响应标题

HTTP/1.1 401 Unauthorized
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
WWW-Authenticate: Basic realm="myip"
X-Powered-By: ASP.NET
Date: Mon, 22 Aug 2016 15:04:15 GMT
Content-Length: 61

{"Message":"Authorization has been denied for this request."}

可能出现什么问题,我应该在哪里寻找解决方案?

修改

必须从IIS应用程序的右窗格设置的“身份验证”菜单中禁用“基本身份验证”。

0 个答案:

没有答案