写在前面:本文仅供个人学习使用,如有侵权,请联系删除。文章中所用图片绝大多数来源于《图解HTTP》,请读者支持原版。

文章目录

  • 8.1何为认证
  • 8.2 BASIC认证
  • 8.3 DIGEST认证
  • 8.4 SSL客户端认证
    • 8.4.1 SSL客户端认证的认证步骤
    • 8.4.2 SSL客户端认证采用双因素认证
    • 8.4.3SSL客户端认证必要的费用
  • 8.5 基于表单的认证
    • 8.5.1 认证多半为基于表单认证
    • 8.5.2 Session管理及Cookie应用

某些Web页面只想让特定的人浏览,或者干脆仅本人可见。为达到这个目的,必不可少的就是认证功能。下面我们一起来学习一下认证机制。

8.1何为认证

核对的信息有密码、动态令牌、数字证书、生物认证、IC卡等。


HTTP使用的认证方式

HTTP/1.1使用的认证方式如下

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

8.2 BASIC认证

BASIC认证(基本认证)是从HTTP/1.0就定义的认证方式。即便是现在仍有一部分的网站会使用这种认证方式。是Web服务器与通信客户端之间进行的认证方式。

BASIC认证虽然采用Base64编码方式,但这不是加密处理。不需要任何附加信息即可对其解码。换言之,由于明文解码后就是用户ID和密码,在HTTP等非加密通信的线路上进行BASIC认证的过程中,如果被人窃听,被盗的可能性极高。

另外,除此之外想再进行一次BASIC认证时,一般的浏览器却无法实现认证注销操作,这也是问题之一。

BASIC认证使用上不够便捷灵活,且达不到多数Web网站期望的安全性等级,因此它并不常用。

8.3 DIGEST认证

为弥补BASIC认证存在的缺点,从HTTP/1.1起就有了DIGEST认证。DIGEST认证同样使用质询/响应的方式(challenge/response),但不会像BASIC认证那样直接发送明文密码。

所谓质询响应方式是指,一开始一方会先发送认证要求给另一方,接着使用从另一方那接收到的质询码计算生成的响应码。最后将响应码返回给对方进行认证的方式。


因为发送给对方的只是相应摘要及由质询码产生的计算结果,所以比起BASIC认证,密码泄露的可能性就降低了。

DIGEST认证提供了高于 BASIC认证的安全等级,但是和HTTPS的客户端认证相比仍然很弱。DIGEST认证提供方式密码被窃听的保护机制,但并不存在防止用户伪装的保护机制。

DIGEST认证和BASIC认证一样,使用上不那么灵活便捷,且仍然达不到多数Web网站对高度安全等级的追求标准。因此它的适用范围也有所受限。

8.4 SSL客户端认证

从使用用户ID和密码的认证方式方面来讲,只要两者的内容正确,即可认证是本人的行为。但如果用户ID和密码被盗,就很有可能被第三者冒充。利用SSL客户端认证则可以避免该情况的发生。

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

8.4.1 SSL客户端认证的认证步骤

为达到SSL客户端认证的目的,需要事先将客户端证书分发给客户端,且客户端必须安装此证书。

步骤1: 接收到需要认证资源的请求,服务器会发送Certificate Request 报文,要求客户端提供客户端证书。

步骤2:用户选择将发送的客户端证书后,客户端会把客户端证书信息以Client Certificate 报文方式发送给服务器。

步骤3:服务器验证客户端证书,验证通过后方可领取证书内客户端的公开密钥,然后开始HTTPS加密通信。

8.4.2 SSL客户端认证采用双因素认证

在多数情况下,SSL客户端认证不会仅依靠证书完成认证,一般会和基于表单认证组合形成一种双因素认证(Two-factor anthentication) 来使用。所谓双因素认证就是指,认证过程中不仅需要密码这一个因素,还需要申请认证者提供其他持有信息,从而作为另一个因素,与其组合使用的认证方式。

换言之,第一个认证因素的SSL客户端证书用来认证客户端计算机,另一个认证因素的密码则用来确定这是用户本人的行为。

通过双因素认证后,就可以确认是用户本人正在使用匹配正确的计算机访问服务器。

8.4.3SSL客户端认证必要的费用

使用SSL客户端认证需要用到客户端证书。而客户端证书需要支付一定费用才能使用。

这里提到的费用是指,从认证机构购买客户端证书的费用,以及服务器运营者为保证自己搭建的认证机构安全运行所产生的费用。

8.5 基于表单的认证

基于表单的认证方法并不是在HTTP协议中定义的。客户端会向服务器上的Web应用程序发送登录信息(Credential) ,按登录信息的验证结果认证。

多数情况下,输入已事先登录的用户ID和密码等登陆信息后,发送给Web应用程序,基于认证结果来决定认证是否成功。

8.5.1 认证多半为基于表单认证

由于使用上的便利性及安全性问题,HTTP协议标准提供的BASIC 和DIGEST认证几乎不怎么使用。另外,SSL客户端认证虽然具有高度的安全等级,但因为导入及维持费用等问题,还尚未普及。

对于Web网站的认证功能,能够满足其安全使用级别的标准规范并不存在,所以只好使用由Web应用程序各自实现基于表单的认证方式。

8.5.2 Session管理及Cookie应用

基于表单认证的标准规范尚未有定论,一般会使用Cookie来管理Session(会话)。

基于表单认证本身是通过服务器端的Web应用,将客户端发送过来的用户ID和密码与之前登陆过的信息做匹配来进行认证的。

但鉴于HTTP是无状态协议,之前已认证成功的用户状态无法通过协议层面保存下来。即,无法实现状态管理,因此即使当该用户下一次继续访问,也无法区分他与其他用户。 于是,我们会使用Cookie来管理Session,以弥补HTTP协议中不存在的状态管理功能。


步骤1: 客户端把用户ID和密码等登录信息放入报文的实体部分,通常是以POST方法把请求发送给服务器。而这时,会使用HTTPS通信来进行HTML表单画面的显示和用户输入数据的发送。

步骤2:服务器会发放用以识别用户的Session ID。通过验证从客户端发送过来的登录信息进行身份认证,然后把用户的认证状态与Session ID绑定后记录在服务器端

步骤3:客户端接收到从服务器端发来的Session ID后,会将其作为Cookie保存在本地。下次向服务器发送请求时,浏览器会自动发送Cookie,所以Session ID也随之发送到服务器。服务器端可通过验证接收到的Session ID识别用户和其认证状态。

《图解HTTP》读书笔记--第8章 确认访问用户身份的认证相关推荐

  1. java 发送带basic认证的http post请求实例代码_图解HTTP学习笔记(八)—确认访问用户身份的认证...

    某些 Web 页面只想让特定的人浏览,或者干脆仅本人可见.为达到这个目标,必不可少的就是认证功能. 一.认证 核对登录者本人才知道的信息: 密码.动态令牌.数字证书.生物认证.IC卡等 HTTP 使用 ...

  2. 确认访问用户身份的认证

    确认访问用户身份的认证 1.服务器在验证访问者身份时,核对的信息通常包括:密码.动态令牌(仅限本人持有的设备内显示的一次性密码).数字证书.生物认证.IC卡等. 2.HTTP使用的认证方式:BASIC ...

  3. (chap8 确认访问用户身份的认证) SSL客户端认证

    SSL客户端认证是借由HTTPS的客户端证书完成的认证方式.凭借客户端整数认证,服务器可确认访问是否来自自己登陆的客户端. 1. 步骤 step1. 接收到需要认证资源的请求,服务器会发送 Certi ...

  4. (chap8 确认访问用户身份的认证) DIGES认证(摘要认证)

    1. 定义 为了弥补BASIC不加密的缺点,DIGEST同样适用质询/响应的方式,但不会像BASIC直接发送明文,给对方的只是相应摘要以及知讯码产生的计算结果,所以比起BASIC认证,密码泄露的可能性 ...

  5. (chap8 确认访问用户身份的认证) 基于表单认证

    1. 定义 基于表单的认证方法并不是在HTTP协议中定义的.客户端会向服务器上的Web应用程序发送登录信息( Credential ),按登录信息的验证结果认证. 根据Web应用程序的实际安装,提供的 ...

  6. (chap8 确认访问用户身份的认证) BASIC认证(基本认证)

    1. BASIC认证是Web服务器与同喜客户端之间进行的认证方式. 2. 步骤 step1. 当请求的资源需要BASIC认证时,服务器会随状态码401Authorization Required,返回 ...

  7. 确认访问用户身份的验证

    核对的信息 ● 密码:只有本人才会知道的字符串信息. ● 动态令牌:仅限本人持有的设备内显示的一次性密码. ● 数字证书:仅限本人(终端)持有的信息. ● 生物认证:指纹和虹膜等本人的生理信息. ● ...

  8. PMP读书笔记(第9章)

    大家好,我是烤鸭:     今天做一个PMP的读书笔记. 第九章 项目资源管理 项目资源管理 项目资源管理的核心概念 项目资源管理的趋势和新兴实践 裁剪考虑因素 在敏捷或适应型环境中需要考虑的因素 9 ...

  9. 《Python从入门到实践》读书笔记——第五章 if语句

    <Python从入门到实践>读书笔记--第五章 if语句 1. 一个简单示例 cars = ['audi', 'bwm', 'subaru', 'toyota']for car in ca ...

最新文章

  1. 打破定式,突破屏障,走出自己的创意舒适区
  2. Unity Editor已停止工作
  3. 数据结构源码笔记(C语言描述)汇总
  4. HDOJ(1115)多边形重心
  5. canvas整体放大_【HTML5】Canvas 实现放大镜效果
  6. bar图设置距离 python_python画图设置坐标轴的位置及角度及设置colorbar
  7. [中级]Java命令学习系列(五)——jhat
  8. 【华为云实战开发】12.如何在云端快速开展Swagger接口测试
  9. 用python一行代码实现1—100之和,你会吗
  10. CC攻击及其解决方法
  11. rhel6.4部署tomcat
  12. 跨境电商系统的一个架构演进
  13. 走一波 程序员必备精品软件大全
  14. Java基本数据类型自动转换规则
  15. 好用插件分享(IE浏览器)
  16. 浅谈在线IDE的搭建,配置,体验
  17. 如何快速开通微信商户现金红包
  18. 01_机器人坐标系的说明
  19. 何时“大庇天下寒士俱欢颜”(附笑话)
  20. 猫影视TV 2.0.8 附稳定源地址

热门文章

  1. 《C与指针》第七章练习
  2. Struts2国际化文件乱码解决
  3. 教程-经典Delphi教程网
  4. Java中对象的复制
  5. 悟空CRM横空出世 为中小型企业献智慧
  6. 抓住二维核力的尾巴---将粒子
  7. 假设一个半衰期为0的对象
  8. js date 加一天_开发效率创新高,只因收下了这波 JS 操作
  9. html任务清单源码,JavaScript jQuery 任务清单 ToDoList
  10. 【Paper】2018_多机器人领航-跟随型编队控制