如何为基本身份验证配置 Web Api 2 和 IIS?
How to configure Web Api 2 and IIS for Basic Authentication?
场景
- 我有一个 Web Api 2.2 RESTful 使用 VS2012 C# 制作的服务
- 我正在使用带有自定义检查的基本身份验证 user/pass(工作正常)
- 某些方法具有
[AllowAnonymous]
属性
- 几个方法正在使用
[Authorize(Roles = "myRol")]
- 在本地也有效(读取用户并通过,与数据库核对,在必须时拒绝或允许,在应该时允许匿名等)
问题
第一次在DEV环境部署服务时,无法登录:
- 带有 AllowAnonymous 的方法 returns
200
- 具有基本安全性的方法 returns
401
数据 (请询问或评论更新)
这是我的 web.config:
<system.webServer>
<modules>
<add name="BasicAuthHttpModule" type="WebHostBasicAuth.Modules.BasicAuthHttpModule, myAssemblyName" />
</modules>
这是我的header(在本地有效):
Authorization: Basic YXR1cG9uZTp0ZXN0
Content-Type: application/json; charset=utf-8
这是我的回复:
状态:401 Unauthorized
数据:{"message":"Authorization has been denied for this request."}
Header:
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 会要求我提供我没有的凭据 and/or无效):
问题:
这个配置好吗?我想念什么?
我如何查看日志或有关此内部错误的信息?
提前致谢。
您的授权码似乎无法连接到数据库。
注释掉连接到数据库的代码,return true 无论如何,看看它是否能让你通过。使用排除法缩小问题的范围。您需要更新数据库连接字符串 (web.config) 等以匹配开发环境。如果您不进行相应调整,您就不能指望在本地工作的东西在另一个环境中也能工作。希望有所帮助。
场景
- 我有一个 Web Api 2.2 RESTful 使用 VS2012 C# 制作的服务
- 我正在使用带有自定义检查的基本身份验证 user/pass(工作正常)
- 某些方法具有
[AllowAnonymous]
属性 - 几个方法正在使用
[Authorize(Roles = "myRol")]
- 在本地也有效(读取用户并通过,与数据库核对,在必须时拒绝或允许,在应该时允许匿名等)
问题
第一次在DEV环境部署服务时,无法登录:
- 带有 AllowAnonymous 的方法 returns
200
- 具有基本安全性的方法 returns
401
数据 (请询问或评论更新)
这是我的 web.config:
<system.webServer>
<modules>
<add name="BasicAuthHttpModule" type="WebHostBasicAuth.Modules.BasicAuthHttpModule, myAssemblyName" />
</modules>
这是我的header(在本地有效):
Authorization: Basic YXR1cG9uZTp0ZXN0
Content-Type: application/json; charset=utf-8
这是我的回复:
状态:401 Unauthorized
数据:{"message":"Authorization has been denied for this request."}
Header:
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 会要求我提供我没有的凭据 and/or无效):
问题:
这个配置好吗?我想念什么?
我如何查看日志或有关此内部错误的信息?
提前致谢。
您的授权码似乎无法连接到数据库。
注释掉连接到数据库的代码,return true 无论如何,看看它是否能让你通过。使用排除法缩小问题的范围。您需要更新数据库连接字符串 (web.config) 等以匹配开发环境。如果您不进行相应调整,您就不能指望在本地工作的东西在另一个环境中也能工作。希望有所帮助。