HTTP协议中的Basic Authentication认证

马谦马谦马谦 计算机网络评论3,372字数 1564阅读5分12秒阅读模式

一、关于Basic Authentication

HTTP本身提供了一种基础的认证方式Basic Authentication,使得访问者在访问时需要输入账号密码认证之后才能访问到页面:

HTTP协议中的Basic Authentication认证-图片1

如果没有输入密码访问,服务器将会返回401

HTTP协议中的Basic Authentication认证-图片2

当服务端开启认证后,通过认证的方式有两种:

  1. 在访问URL的时候主动代码账号和密码信息,如http://user:password@www.baidu.com,其中user是账户名,password是密码。
  2. 在请求头部加上Authorization头部,并将值设置为Basic xxxx,xxxx是账号和密码的base64编码结果。

一般我们使用的是第二种方式:如果网站需要认证,浏览器会自动会弹出登录框,手动输入账号密码后浏览器在头部带上认证信息访问。以下是一个抓包示例:

HTTP协议中的Basic Authentication认证-图片3

最下面一行的Authorization是授权信息,最后的bWFxaWFuOnF3ZTEyMw==即是经过base64加密后的账号密码。使用base64命令解码即可得到认证信息:

关于认证状态保持

浏览器如何做到保持状态的呢?根据抓包分析发现,认证成功后,浏览器会自动记住当前页面的账号信息。后续的每一个请求,浏览器都自动加上认证头部,无需每次都再输入账号密码,这样就达到了认证状态保持的效果。

HTTP协议中的Basic Authentication认证-图片4

二、使用nginx开启basic authentication

nginx默认提供了ngx_http_auth_basic_module模块以支持basic authentication,该指令为:

其中auth_basic认证信息的提示语句,他的值可以是一个字符串或者off,如果值是off表示访问无需认证,如果值是一个字符串,表示需要提供认证信息才能访问。并且大部分浏览器会把这个字符串返回到前端,测试发现chrome不会,edge会:

HTTP协议中的Basic Authentication认证-图片5

auth_basic_user_file的值是密钥文件的路径,里面保存了所有的账号密码,内容格式为:

nginx支持以下密码类型:

  1. encrypted with the crypt() function; can be generated using the “htpasswd” utility from the Apache HTTP Server distribution or the “openssl passwd” command;
  2. hashed with the Apache variant of the MD5-based password algorithm (apr1); can be generated with the same tools;
  3. specified by the “{scheme} data” syntax (1.0.3+) as described in RFC 2307; currently implemented schemes include PLAIN (an example one, should not be used), SHA (1.3.13) (plain SHA-1 hashing, should not be used) and SSHA (salted SHA-1 hashing, used by some software packages, notably OpenLDAP and Dovecot).

通常,我们可以使用htpasswdopenssl命令来生成密码,如:

指令放置上下文

这个指令可以放置在:

三、参考

Module ngx_http_auth_basic_module

 
马谦马谦马谦
  • 本文由 马谦马谦马谦 发表于 2019年11月16日19:28:13
  • 转载请务必保留本文链接:https://www.dyxmq.cn/network/baisc-authentication-in-http.html
HTTP/2简介 计算机网络

HTTP/2简介

一、HTTP/2概述 HTTP/2是HTTP协议的第二个大版本,相较于HTTP/1而言,HTTP/2的核心观念是“构建一个更快、更简单以及更强大”的web应用。 HTTP/2 will make ou...
HTTP协议中的keep-alive机制 计算机网络

HTTP协议中的keep-alive机制

一、长连接和短连接 长连接和短链接的概念: 短连接:传输完数据后连接立刻关闭。 长连接:传输完数据后不会立刻关闭连接,下次传输数据继续复用这个连接。 很容易看出,长连接和短连接的主要区别就是连接完成后...
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证