1

我正在尝试在我的 mvc.net Web 应用程序上设置基本身份验证。我使用以下示例配置了我的控制器:asp mvc 3 ActionFilter for basic authentication

我设置了一个断点来检查授权标头,但是标头不存在于 HttpRequest 中。我正在访问这样的网站:

http://user1:pass1@localhost/{AppName}/Client/Authorize

如果我从控制器中删除 [BasicAuthorization] 属性,我就可以访问该页面。

我在 Windows 7 机器上使用 IIS 7.0 对此进行调试。

我认为这可能与 IIS 中的默认授权设置有关。当我抛出 HttpUnauthorizedResult() 异常时,Chrome 中会弹出一个用户名/密码框...我不确定如何告诉 IIS 使用我的自定义代码来验证用户身份。

人类用户无法访问此应用程序,因此需要在 URL 中传递用户名/密码,如上所示。

我还发现了这篇文章:No browser is sent Authorization info in header。在 IIS 将 UnauthorizedRequest 发送到浏览器后,我尝试发送两次请求,但那是弹出用户名/密码对话框的时候。我也不确定如何使用该 Curl 命令进行测试...是通过 CMD 吗?

4

1 回答 1

2

我在这里找到了这篇文章:MVC4 app + WebApi 中的 SimpleMembership using basic HTTP auth

我可以参考本教程中使用的测试页面:http: //kevin-junghans.blogspot.ca/2013/02/mixing-forms-authentication-basic.html来设置一个简单的测试页面来测试基本身份验证工作正常。

我不完全确定原因,但我相信当您尝试像这样发送凭据时,浏览器不会自动向 HttpRequest 添加身份验证标头:

http://user1:pass1@localhost/{AppName}/Client/Authorize

它必须与浏览器有关,在发送身份验证标头之前首先需要服务器的 401 响应。我只是不知道该怎么做。如果有人知道如何正确配置 IIS/浏览器,以便您可以使用上述 URL 格式轻松测试基本身份验证,请告诉我。

于 2013-07-30T19:37:02.187 回答