图解http读书笔记三——确认访问用户身份的认证

http使用的认证方式

  • basic认证(基本认证)
  • digest认证(摘要认证)
  • ssl客户端认证
  • frombase认证(基于表单认证)

basic认证

这里写图片描述
basic认证采用base64编码 ,但是不是加密处理,不需要任何附加信息即可解码,解码后就是用户id和密码。且无法实现注销操作

digest认证

这里写图片描述
简单的说,就是服务器发给客户端一串密码,客户端通过算法得到响应吗并返回服务器端,服务器认证成功,然后request-uri资源。

ssl客户端认证

一般来说,用户id和密码正确即可确定是本人登陆,但是如果被盗,则无法保证了。这是ssl认证可发挥作用
步骤:
1.收到认证资源的请求,服务器发送certificate request报文,要求客户端提供证书
2.用户选择将发送的客户端证书后,客户端会把客户端证书信息,以client certificate报文方式发送给服务器
3.服务器验证客户端证书后,方可领取证书内容客户端的公开**,然后开始https加密通信

基于表单认证

多数情况下,输入已事先登陆的用户id和密码后,发给web应用程序,基于认证结果来决定认证是否成功

  • 认证多半为基于表单认证
    http协议提供的basic认证和digest认证不太用,ssl认证有费用,并不普及
  • session管理及cookie应用
    我们用cookie来管理session,来弥补http协议中不存在的状态管理功能。
    这里写图片描述 步骤1.客户端把用户id和密码等登录信息放入报文的实体部分,通常是以post方法把请求发送到服务器,而这时,会使用https通信来进行html表单画面的显示和用户输入数据的发送 步骤2.服务器会发送用以识别用户的session id。通过验证客户端发来的登录信息进行身份证,然后把用户的认证状态与sessionid绑定后记录在服务器端。 向客户端返回响应时候,会在首部字段set-cookie内写入sessionid。 可以把sessionid想象成一种用于区分不同用户的等位号。如果sessionid被盗,那么对方就可以伪装成你进行恶意操作了。 步骤3.客户端接收到从服务器端发来的sessionid后,会将他作为cookie保存在本地,下次向服务器发送请求时候,浏览器会自动发送cookie,所以sessionid也随之发送到服务器。服务器就可以通过验证sessionid识别用户和认证状态