如何配置Web Api 2和IIS以进行基本身份验证?

5

情景

  • 我有一个使用VS2012 C#创建的Web Api 2.2 RESTful服务
  • 我正在使用基本身份验证,具有自定义检查用户名/密码的功能(运行良好)
  • 某些方法具有[AllowAnonymous]属性
  • 多个方法正在使用[Authorize(Roles = "myRol")]
  • 在本地工作正常(读取用户和密码,使用数据库进行检查,在必要时拒绝或允许,应匿名允许等)

问题

当我第一次在DEV环境中部署服务时,我无法登录:

  • 具有AllowAnonymous的方法返回200
  • 具有基本安全性的方法返回401

数据 (请询问或评论以获取更新)

这是我的web.config:

<system.webServer>
    <modules>
  <add name="BasicAuthHttpModule" type="WebHostBasicAuth.Modules.BasicAuthHttpModule, myAssemblyName" />
</modules>

这是我的标题(在本地有效):

Authorization: Basic YXR1cG9uZTp0ZXN0
Content-Type: application/json; charset=utf-8

这是我的回应:

状态:401 未经授权
数据: {"message":"请求的授权被拒绝。"}
头部信息:

Pragma: no-cache
Date: Fri, 24 Apr 2015 14:36:27 GMT
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Type: application/json; charset=utf-8
Cache-Control: no-cache
Content-Length: 61
Expires: -1

这是我的 IIS 配置(如果我设置“基本身份验证”为“开启”,IIS 会向我询问我没有或无效的凭据):

IIS Config


问题: 这配置正确吗?我有什么遗漏吗? 我如何查看关于此内部错误的日志或其他内容?
提前感谢。

你把数据库加入到开发环境了吗?使用提供的身份验证启动项目时,VS会创建一个类似隐藏的小型数据库。你需要将数据库推送到开发服务器上。 - ESD
@AntoineLev 我的应用程序中有一个自定义用户/角色模型的自定义身份验证。 - Leandro Bardelli
1个回答

0

看起来您的授权代码无法连接数据库。

注释掉连接到数据库的代码并无论如何返回true,看看是否能够通过。使用排除法缩小问题范围。您需要更新DB连接字符串(web.config)等,以匹配开发环境。如果没有相应调整,您不能指望在另一个环境中可以像本地一样正常工作。希望这能有所帮助。


谢谢。这是关于DAS升级问题的。DAS返回了401,所以你很接近了。 - Leandro Bardelli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接