【问题标题】:What is wrong with my Basic Authentication in my Browser?我的浏览器中的基本身份验证有什么问题?
【发布时间】:2011-02-01 05:15:38
【问题描述】:

我正在尝试转到以下网址:-

http://user1:pass1@localhost:1234/api/users?format=xml

没什么复杂的。请注意我是如何在 url 中获得用户名/密码的?我相信这是用于基本身份验证。

当我这样做时,请求标头缺少“授权”标头。呃……这不对:(

我在网站上只设置了匿名身份验证。我不想关闭 anon 并打开 basic .. 因为并非所有网站都需要 basic.. 只有几个操作方法。

那么..为什么这不起作用?这与我的代码没有发送 401 挑战或一些废话有关吗?

值得一提的是,我的网站是在 IIS7 上运行的 ASP.NET MVC1(当我在 cassini 上运行它时也会发生同样的事情)。

更新:

如果这是使用基本身份验证(ala 安全漏洞)调用资源的非法方式.. 那么对于 ASP.NET MVC 网站.. 每个操作方法(而不是整个站点,每个说)?

【问题讨论】:

  • 从技术上讲,URI 方案是不合法的。它从来没有,现在它是一个安全问题,网络浏览器正在忽略它。此外,如果您不发送 401,是的,浏览器不会吐出密码。为什么要这样做?
  • 那么不可能在每个操作方法的基础上进行基本身份验证吗?这是整个网站还是什么都没有?以及我们如何测试基本身份验证(即单元测试等)?

标签: asp.net-mvc iis-7 cassini basic-authentication http-status-code-401


【解决方案1】:

我的公司生产了一款名为 Neokernel Web Server (http://www.neokernel.com) 的产品,它是一个 ASP.NET Web 服务器,支持基本身份验证以及其他功能。

您在 apache 风格的配置文件中指定受保护的资源,这样您就可以将“受保护”操作放在需要身份验证的文件夹中,并将其他所有内容放在根目录/未受保护的文件夹中。以安装在 Neokernel 根目录中的“http.authentication”文件为例,或者查看 demos.zip 文件中的身份验证示例。

【讨论】:

    【解决方案2】:

    如果要使用基本身份验证,对资源的第一次请求需要返回 HTTP 401 错误代码,并设置 WWW-Authenticate 标头。这将指示浏览器实际发送这些凭据。

    您提到您正在使用 ASP.NET MVC。您也许可以通过 web.config 执行此操作,但我不确定确切的机制。

    【讨论】:

      猜你喜欢
      • 2015-03-20
      • 2011-01-03
      • 1970-01-01
      • 2019-06-26
      • 2012-08-25
      • 1970-01-01
      • 2011-04-28
      • 2015-07-22
      • 1970-01-01
      相关资源
      最近更新 更多