HTTP 身份认证

身份认证信息
密码 只有本人知道的字符串信息
动态令牌 仅限本人持有的设备的一次性密码
数字证书 本人持有的终端信息
生物认证 指纹,虹膜
IC卡

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

BASIC认证 发送base64编码过的明文

HTTP1.0 定义的认证
服务器和客户端定义的统一认证

过程:

  1. 服务器收到请求,向客户端返回状态码401(Authorization Required),告知客户端需要进行验证
  2. 客户端通过basic认证,需要通过用户名和密码以Base64编码(浏览器实现)发送给服务器(Authorization:Basic 编码后字符串)
  3. 如果成功返回200,失败继续返回401

由于明文信息经过base64解码后就是信息文本,安全性不高

DIGEST认证 通过指定算法如md5+质询码加密

HTTP 1.1
为弥补BASIC认证存在的弱点,从HTTP1.1起就有了digest认证
digest认证同样使用质询/响应的方式,但不会像basic认证那样直接发送明文密码
提供了高于basic认证的安全机制

在HTTP1.1提供的digest认证中,服务器收到请求以后,返回的是digest认证所需要的头部字段

  • 状态码401和临时质询码nonce
  • www-Authenticate:Digest realm ... algorithm=MD5,qop="auth"...
  • 客户端发送摘要以及由质询码计算得来的响应码给服务器(比如经过MD5算法计算得来的字符串)

防止密码窃听的机制,但是没有防止用户伪装机制,使用上不便捷灵活

SSL客户端认证

SSL客户端认证是皆有HTTPS的客户端证书完成认证的方式。
凭借客户端证书认证,服务器可确认访问是否来自于已登录的客户端

证书会通过报文的方式发送给服务端

客户端把证书以client-satificate的方式发送给服务器
服务器验证客户端证书,验证通过后,领取公开密码

具有一定的使用成本,一般是金融相关行业使用

高度安全等级,因为导入,费用问题,导致难以维持,一般是金融机构使用

FormBase 基于表单的认证(cookie和session机制,用得更多,由web应用程序定义)

基于表单的认方法并不是在HTTP协议中定义的
使用由Web应用程序各自实现基于表单的认证方式
通过cookie和session的方式来保持用户的状态

cookie和session还是存在安全问题
基于代码的方式保证有效性和安全性

posted @ 2022-05-25 14:07  IslandZzzz  阅读(83)  评论(0编辑  收藏  举报