HTTP学习笔记10 用户身份认证

HTTP/1.1认证方式:

  • BASIC认证(基本认证)
  • DIGEST认证(摘要认证)
  • SSL客户端认证
  • FormBase认证(表单认证)

BASIC认证

请求:

GET /private/http/1.1
Host: hack.jp

①服务器返回状态码401 Authorization Required,并带有WWW-Authenticate首部字段

HTTP/1.1 401  Authorization Required
其他字段...
WWW-Authenticate:Basic realm="Input your ID and password"

②用户ID和密码由冒号连接,经Base64编码后,写入首部字段Authorization,发送请求

GET /private/http/1.1
Host: hack.jp
Authorization: Z3Vlc3Q6Z3Vlc3Q=

③服务端接受到请求后,验证用户ID和密码,若通过则返回请求的资源,否则返回401响应

不足:用户ID和密码未加密处理,容易泄露

DIGEST认证

DIGEST认证规避了直接发送明文密码的缺点,采用质询码计算的方式来认证
请求:

GET /digest/http/1.1
Host: hack.jp

①服务器返回状态码401 Authorization Required,并带有WWW-Authenticate首部字段,并包含临时的质询码(随机数,nonce)

HTTP/1.1 401  Authorization Required
其他字段...
WWW-Authenticate:Digest realm="DIGEST",nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", uri="/digest/", algorithm=MD5, qop="auth"

②客户端返回的响应中的首部字段Authorization必须包含username,realm,nonce,uri,response
其中username为realm限定范围内的用户名
realm和nonce为从服务器接受到的响应中的字段,uri是请求资源的地址
response是使用服务器回复报文中的nonce值,加上username,password, http method, http uri经过MD5运算后的密码字符串

GET /digest/http/1.1
Host: hack.jp
Authorization: Digest username="guest", realm="DIGEST",nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", uri="/digest/", algorithm=MD5, qop=auth, response="6629fae49393a05397450978507c4ef1",cnonce="0a4f113b", nc=00000001

③服务端接受到请求后,根据username,查找出用户的password,用和客户端同样的方法计算出request-digest(response)。然后和收到的request-digest进行对比,如果一致,则验证成功,接受客户端的请求,成功返回结果。并带有Authentication-Info消息头。客户端根据该消息头中的参数进行服务器鉴权。
**这里写图片描述**

SSL客户端认证

使用SSL客户端认证,首先需要在客户端安装证书

①服务器接收到认证资源的请求后,会返回Certificate Request报文,要求客户端提供证书

②客户端选择要发送的证书后,以Client Certificate报文的方式发送给服务器

③服务器验证客户端证书通过后,获取证书内的公开密钥,开始HTTPS通信

多数情况下SSL客户端认证会和表单认证相结合,构成双因素认证(Two-factor authentication),SSL客户端证书认证计算机,表单密码认证用户本人

表单认证

WEB网站中的认证大多都是表单认证,即将用户名和密码以表单的方式,发送给服务器验证,一般会结合Cookie来管理会话(Session)

①客户端把用户ID和密码等登录信息放入报文的实体部分,通常以POST请求的方式发送给服务器

②服务器会发放用以识别用户的Session ID。通过验证从客户端发送过来的登录信息进行身份认证,将用户的认证状态和Session ID绑定后记录在服务器端。
向客户端发送响应时,会在首部字段Set-Cookie内写入Session ID(为防止XSS攻击,应事先在字段中加入httponly属性,避免Session ID被盗取)

③客户端收到服务端发送的Session ID后,将其保存在本地,下次请求时,浏览器会自动发送带有Session ID的Cookie,服务器通过验证Session ID识别用户和其认证状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值