【问题标题】:How to configure Web Api 2 and IIS for Basic Authentication?如何为基本身份验证配置 Web Api 2 和 IIS?
【发布时间】:2015-07-03 06:09:39
【问题描述】:

场景

  • 我有一个使用 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 Unauthorized
数据{"message":"Authorization has been denied for this request."}
标题

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 配置(如果我在“on”中设置基本身份验证,IIS 会要求我提供我没有和/或无效的凭据):


问题:

这个配置好了吗?我错过了什么?
如何查看日志或有关此内部错误的信息?

提前致谢。

【问题讨论】:

  • 您是否将数据库添加到开发环境中? VS 在您使用提供的身份验证启动项目时创建一个隐藏的小型数据库。您需要将数据库推送到开发服务器。
  • @AntoineLev 我的自定义用户/角色模型有一个自定义身份验证

标签: c# .net iis asp.net-web-api


【解决方案1】:

您的授权码似乎无法连接到数据库。

注释掉连接到数据库的代码并返回true,看看它是否能让你通过。使用消除来缩小问题所在。您需要更新数据库连接字符串(web.config)等以匹配开发环境。如果您没有进行相应的调整,您就不能指望在本地工作的东西在另一个环境中工作。希望有帮助。

【讨论】:

  • 谢谢。这是关于 DAS 的升级问题。 DAS 是返回 401,所以你就在附近。
猜你喜欢
  • 2014-07-01
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
  • 2021-07-19
  • 2013-10-27
  • 2021-10-13
  • 2023-03-21
  • 2014-01-28
相关资源
最近更新 更多