【问题标题】:How does http://user:pass@host.com authentication work?http://user:pass@host.com 身份验证如何工作?
【发布时间】:2011-12-11 18:26:07
【问题描述】:

谁能解释http://user:pass@host.com 身份验证的工作原理?浏览器是否发送带有user:passAuthorization 标头是base-64 编码的?

我在 Chrome 开发者工具中打开了 Net 控制台,当我发出 http://user:pass@stackoverflow.com 之类的请求时,我没有看到添加了 Authorization 标头。

如果我在 URL 前使用user:pass@,我真的很好奇浏览器如何发送密码。

【问题讨论】:

  • 只是授权头。我不知道 Chrome 是如何做到的,但使用 Firefox 时,它会检查网站是否要求进行身份验证(在请求中),如果不是,则警告您 You are about to log in to the site "stackoverflow.com" with the username "user", but the website does not require authentication. This may be an attempt to trick you. Is "stackoverflow.com" the site you want to visit? 然后它要么 [是] 切断auth details 或 [No] 中止请求。因此,除非您有一个方便的授权站点,否则您不会看到标题。

标签: http web http-authentication


【解决方案1】:

要检查标头,您需要针对需要身份验证的服务器进行测试。在服务器请求之前,客户端不会发送任何 Authorization 标头,因为客户端不知道服务器需要哪种身份验证方法(基本或摘要)。


HTTP 身份验证在两个请求中完成:

首先,发送一个没有任何Authorization 标头的请求。 然后服务器以WWW-Authenticate 响应,告诉客户端如何进行身份验证。这包括领域名称和身份验证方法(同样,这是基本的或摘要的)

然后客户端发送一个带有额外Authorization 标头的新请求。在basic authentication 的情况下,此标头只是user:pass base64 编码,正如您所说:

Authorization: Basic dXNlcjpwYXNz

现在密码在传输过程中可见,除非您使用 https。更好的选择是digest authentication,其中WWW-AuthenticateAuthorization 的内容最好由wikipedia article 解释。 :)

【讨论】:

猜你喜欢
  • 2013-06-02
  • 2011-11-19
  • 2018-11-30
  • 2015-06-13
  • 2016-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多