http:// user:pass@host.com身份验证如何工作?

时间:2011-10-20 12:35:31

标签: http web http-authentication

任何人都可以解释http://user:pass@host.com身份验证的工作原理吗?浏览器是否发送Authorization标头,user:pass是否为base-64编码?

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

我非常好奇浏览器在网址前面使用user:pass@时如何发送密码。

1 个答案:

答案 0 :(得分:3)

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


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

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

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

Authorization: Basic dXNlcjpwYXNz

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