HTTP基本authentication – 预期的浏览器体验是什么?

当服务器允许通过基本HTTPauthentication访问时,浏览器期望的体验是什么?

我通常只是用curl来做到这一点:

curl -u myusername:mypassword http://somesite.com 

它工作得很好。 但是,现在我无法curl(长篇故事),如果可能的话,我只想从网页浏览器中完成。

我认为基本身份validation应该工作的方式是 – 我input我想要的url,服务器然后决定我没有授权,返回响应代码401,我input我的用户名和密码到提示。 如果这是正确的,页面加载!

然而,在somesite.com,我没有得到授权提示,只是一个页面,说我没有授权。 Somesite没有正确实施基本身份validation工作stream程,还是有什么我需要做的?

为了帮助大家避免混淆,我将分两部分来重新提出这个问题。

首先: “我怎样才能使用一个curl命令的浏览器?

在浏览器中,您可以先等待提示符来执行http basic auth,或者按照以下格式编辑URL: http://myusername:mypassword@somesite.com

注意:在问题中提到的curl命令是非常好的,如果你有一个命令行和curl安装。 ;)

参考文献:

另外根据CURL手册页面https://curl.haxx.se/docs/manual.html

 HTTP Curl also supports user and password in HTTP URLs, thus you can pick a file like: curl http://name:passwd@machine.domain/full/path/to/file or specify user and password separately like in curl -u name:passwd http://machine.domain/full/path/to/file HTTP offers many different methods of authentication and curl supports several: Basic, Digest, NTLM and Negotiate (SPNEGO). Without telling which method to use, curl defaults to Basic. You can also ask curl to pick the most secure ones out of the ones that the server accepts for the given URL, by using --anyauth. NOTE! According to the URL specification, HTTP URLs can not contain a user and password, so that style will not work when using curl via a proxy, even though curl allows it at other times. When using a proxy, you _must_ use the -u style for user and password. 

第二个真正的问题是“但是,在somesite.com上,我没有得到授权提示,只是一个页面,说我没有被授权,有没有实现基本身份validation工作stream程正确,还是有东西否则我需要做?

curl文档说-u选项支持多种身份validation方法,Basic是默认的。

你有没有尝试过 ?

 curl somesite.com --user username:password 

您可能会在浏览器中caching旧的无效用户名/密码。 尝试清除它们并再次检查。

如果您正在使用IE,并且somesite.com位于您的Intranet安全区域中,IE可能会自动发送您的Windows凭据。

如果在请求标头中没有提供凭据,则以下是IE提示用户input凭据并重新提交请求所需的最低响应。

 Response.Clear(); Response.StatusCode = (Int32)HttpStatusCode.Unauthorized; Response.AddHeader("WWW-Authenticate", "Basic"); 

WWW-validation标头

如果服务器发送了401响应代码,但是没有正确设置WWW-Authenticate头,你也可以得到这个信息 – 我应该知道,我只是修改了自己的代码,因为VB应用程序没有popupauthentication提示。

你可以使用邮递员一个插件的铬。 它提供了select每个请求所需的身份validationtypes的function。 在该菜单中,您可以configuration用户和密码。 邮递员将自动将configuration转换为一个authentication头,将随您的请求一起发送。