HTTP Basic Authentication认证

前言

大家在登录网站的时候,大部分时候是通过一个表单提交登录信息。

但是有时候浏览器会弹出一个登录验证的对话框,如下图,这就是使用HTTP基本认证。


说明 HTTP Basic Authentication

在你访问一个需要HTTP Basic Authentication的URL的时候,如果你没有提供用户名和密码,服务器就会返回401,如果你直接在浏览器中打开,浏览器会提示你输入用户名和密码,也就是上面的图示。

要在发送请求的时候添加HTTP Basic Authentication认证信息到请求中,有两种方法:  

一是在请求头中添加Authorization:  Authorization: "Basic 用户名和密码的base64加密字符串"  。
二是在url中添加用户名和密码。

认证过程:

第一步:  客户端发送http request 给服务器,服务器验证该用户是否已经登录验证过了,如果没有的话,服务器会返回一个401 Unauthozied给客户端,并且在Response 的 header "WWW-Authenticate" 中添加信息。如下图。


第二步:浏览器在接受到401 Unauthozied后,会弹出登录验证的对话框。用户输入用户名和密码后,浏览器用BASE64编码后,放在Authorization header中发送给服务器。如下图:

 第三步: 服务器将Authorization header中的用户名密码取出,进行验证, 如果验证通过,将根据请求,发送资源给客户端,认证结束。

  当request第一次到达服务器时,服务器没有认证的信息,服务器会返回一个401 Unauthozied给客户端。认证之后将认证信息放在session,以后在session有效期内就不用再认证了。

Http Basic Auth 原理

在HTTP协议进行通信的过程中,HTTP协议定义了基本认证过程以允许HTTP服务器对WEB浏览器进行用户身份认证的方法,当一个客户端向HTTP服务 器进行数据请求时,

如果客户端未被认证,则HTTP服务器将通过基本认证过程对客户端的用户名及密码进行验证,以决定用户是否合法。

客户端在接收到HTTP服务器的身份认证要求后,会提示用户输入用户名及密码, 用户输入后,

客户端将用户名和密码中间用“:”分隔合并,并将合并后的字符串用BASE64编码,在每次请求数据 时,将密文附加于请求头(Request Header)Authorization: Basic XXXXXXX中。

HTTP服务器在每次收到请求包后,根据协议取得客户端附加的用户信息(BASE64编码的用户名和密码),解开请求包,对用户名及密码进行验证,

如果用 户名及密码正确,则根据客户端请求,返回客户端所需要的数据;否则,返回错误代码或重新要求客户端提供用户名及密码。

参考文档:https://blog.csdn.net/qq_15783243/article/details/78586699

https://www.cnblogs.com/xiaocandou/p/7991927.html

https://blog.csdn.net/youzhouliu/article/details/52048393

https://blog.csdn.net/jingzhunbiancheng/article/details/80959492



原文地址:https://www.cnblogs.com/yuqiangli0616/p/9389273.html