基本身份验证(Basic authentication):是 HTTP 支持的身份验证。它依赖于用户代理[浏览器]来提供用户名和密码字段以供用户填写。它称为基本身份验证,因为它以纯文本形式或以 Base64 编码发送凭据。
摘要式身份验证(Digest Authentication):另一种类型的 HTTP 支持的身份验证被认为比基本身份验证更安全,因为它将散列密码与其他值而不是纯文本一起发送到服务器。
身份验证步骤
1-客户端发送请求访问服务器上的资源,即/resources/
2- 服务器以 401 未经授权状态以及随机数和不透明的随机值进行响应,并提示用户通过浏览器的弹出框输入所需的凭据。
浏览器弹出框
3- 客户端通过新请求将凭证发送到服务器以访问所请求的资源。数据包中将包含客户端的用户名、服务器托管资源的“域”;在本例中为“example@host.com[1]”,请求的资源即/资产和响应值。
响应值是密码、随机数和不透明值的哈希值,与服务器在第一个响应中发送的值相同(简单理解就是客户端与服务端协商生成hash进行比对)。
GET /resources/ HTTP/1.0
Host: localhost
Authorization: Digest username=”newUser”
realm=”example@host.com”
nonce=”dcd98b7102dd2f0e8b11d0f600bfb0c093"
uri=”/resources/”
response=”6629fae49393a05397450978507c4ef1"
opaque=”5ccc069c403ebaf9f0171e9517f40e41"
4- 如果凭据正确即身份验证通过,客户端将收到 200 OK 响应并能够访问资源。
参考
https://en.wikipedia.org/wiki/Digest_access_authentication
https://www.pentesteracademy.com/video?id=175
无偿获取网络安全优质学习资料与干货教程
申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。