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:[email protected],其中 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:
确定

拖动滑块以完成验证