前言

认证功能能让Web页面只被有权限的人访问。而认证机制究竟是怎样一个原理呢?通过今天的学习能对这个有个大致的了解。

正文

什么是认证

计算机无法判断对方的身份,需要客户端自报家门。

服务端为确认客户端是否真的具有访问系统的权限,需要核对

“登录者本人才知道的信息”、“登录者本人才会有的信息”

HTTP使用的认证方式

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

  • BASIC认证(基本认证)

  • DIGEST认证(摘要认证)

  • SSL客户端认证

  • FormBase认证(基于表单认证)

Basic认证

Web服务器与通信客户端之间进行的认证方式。

Basic认证的认证步骤

  1. 客户端请求的资源需要BASIC认证,服务器随401状态码(需要认证),返回带WWW-Authenticate首部字段的响应。
  2. 接收到401状态码的客户端为了通过BASIC认证,需要将用户ID和密码发送到服务器(冒号连接,再经过Base64编码处理)。
  3. 接收到包含首部字段Authorization请求的服务器,会对信息的正确性进行验证。(若通过,则返回一个包含Request-URI资源的响应)

PS:Basic认证所采用的Base64编码并不是加密处理。

DIGEST认证

采用和Basic认证一样的质询/响应(challenge/response)的方式。

Digest认证的认证步骤:

  1. 客户端请求需认证的资源时,服务器会随401状态码返回带WWW-Authenticate首部字段的响应,该字段包含质问响应方式认证所需的临时质询码(随机数,nonce)。
  2. 客户端接收到401状态码,返回的响应中包含DIgest认证必须得首部字段Authenticate信息。(Authenticate中包含username,realm,nonce,uri和response的字段信息,realm和nonce是从服务器接收到的响应中的字段)
  3. 服务器接收到包含首部字段Authorization请求的服务器,确认认证信息的正确性。通过后返回包含Request-URI资源的响应。

SSL客户端认证

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

SSL客户端认证的步骤:
需事先将客户端证书分发给客户端,且客户端必须安装此证书。

  1. 服务器接收到需要认证资源的请求时,服务器会发送Certificate Request报文,要求客户端提供客户端证书。
  2. 客户端将客户端证书信息以Client Certificate报文方式发送给服务器。
  3. 服务器验证客户端证书验证通过后才能领取证书内客户端的公开密钥,然后开始HTTPS加密通信。

SSL客户端认证采用双因素认证
证书认证(SSL客户端证书认证客户端计算机)+表单认证(密码用来确定是用户本人的行为)

基于表单认证

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

认证多半为基于表单认证
BASIC和DIGEST几乎不怎么使用(便利性和安全性考虑),SSL客户端认证未普及(导入和维持费用等问题)

Session管理和Cookie应用
HTTP是无状态协议,之前已认证成功的用户状态无法通过协议层面保存下来。即无法实现状态管理,我们使用Cookie来管理Session(会话),以弥补HTTP协议中不存在的状态管理功能。

步骤:

  1. 客户端把用户ID和密码等登录信息放入报文的实体部分,通常以POST请求的方式发送给服务器。
  2. 服务器会发放用以识别用户的Session ID。通过验证从客户端发送过来的登录信息进行身份认证,将用户的认证状态和Session ID绑定后记录在服务器端。
  3. 客户端接收到Session ID后,会将其作为Cookie保存在本地。下次向服务器发送请求时,浏览器自动发送Cookie,Session ID会随之发送到服务器。服务端通过验证接收到的Session ID识别用户和其认证状态。

图解HTTP学习笔记——确认访问用户身份的认证的更多相关文章

  1. 确保web安全的https、确认访问用户身份的认证(第七章、第八章)

    第七章 确保web安全的https 1.http的缺点: (1)通信使用明文,内容可能会被窃听 (2)不验证通信方的身份,因此有可能遭遇伪装 (3)无法证明报文的完整性,因此有可能已遭篡改. 2.通信 ...

  2. 读《图解HTTP》有感-(确认访问用户身份的认证)

    写在前面 认证机制能够保证特定的资源给特定的(经过认证的)用户访问.从而保证了资源的机密性. 正文 1.为什么要认证?认证的媒介是什么? 认证的目的在于确认访问者的身份,保证资源的私有性(只有经过特定 ...

  3. 图解HTTP总结(8)——确认访问用户身份的认证

    Session 管理及 Cookie 应用 基于表单认证的标准规范尚未有定论,一般会使用Cookie来管理Session(会话). 基于表单认证本身是通过服务器端的Web应用,将客户端发送过来的用户I ...

  4. openresty 学习笔记五:访问RabbitMQ消息队列

    openresty 学习笔记五:访问RabbitMQ消息队列 之前通过比较选择,决定采用RabbitMQ这种消息队列来做中间件,目的舒缓是为了让整个架构的瓶颈环节.这里是做具体实施,用lua访问Rab ...

  5. 图解HTTP学习笔记——简单的HTTP协议

    简单的HTTP协议 前言 最近在学习Web开发的相关知识,发现<图解HTTP>这本书通俗易懂.所以花时间学习这本书,并记录下学习笔记. 如上图,我们每天都在浏览网页,一般我们都是在浏览器地 ...

  6. Shiro学习笔记总结,附加" 身份认证 "源码案例(一)

    Shiro学习笔记总结 内容介绍: 一.Shiro介绍 二.subject认证主体 三.身份认证流程 四.Realm & JDBC reaml介绍 五.Shiro.ini配置介绍 六.源码案例 ...

  7. Bash脚本编程学习笔记05:用户交互与脚本调试

    用户交互 在<学习笔记04>中我们有提到位置参数,位置参数是用来向脚本传递参数的一种方式.还有一种方式,是read命令. [root@c7-server ~]# read name alo ...

  8. Linux学习笔记06—系统用户及用户组的管理

    一.认识/etc/passwd和/etc/shadow 1./etc/passwd 由 ‘:’ 分割成7个字段,每个字段的具体含义是: 用户名 存放账号的口令:现在存放在/etc/shadow下,在这 ...

  9. 图解HTTP学习笔记

    前言: 一直觉得自己在HTTP基础方面都是处于知其然,不知其所以然的样子.最近利用空闲时间拜读了一下图解HTTP,写篇博客记录一下读书笔记. TCP三次握手: ① 发送端首先发送一个带SYN标志的数据 ...

随机推荐

  1. python seaborn 画图

    python seaborn 画图 59888745@qq.com 2017.08.02 distplot( )  kdeplot( ) distplot( )为hist加强版, kdeplot( ) ...

  2. 轻松学习JavaScript二十七:DOM编程学习之事件模型

    在介绍事件模型之前,我们先来看什么是事件和什么是event对象. 一事件介绍 JavaScript事件是由訪问Web页面的用户引起的一系列操作,使我们有能力创建动态页面.事件是能够被 JavaScri ...

  3. WPF DataTomplate中Command无效

    问题:在DataTomplate中添加一个Button,Button添加Command,但是Command生效. 原因:ItemTemplate的DataContext指代不明,需要改为父类的Data ...

  4. WPF使用socket实现简单聊天软件

    公司网络限制不能传文件,先贴部分代码 控件添加到界面就行,界面随意布局 项目结构: 1.解决方案 1.1. Client 1.2. Server Client: <Window x:Class= ...

  5. 聊下图片滤镜,手机上的,lookup table(颜色查找表

    今天这里要介绍的是lookup table(颜色查找表),简而言之就是通过将每一个原始的颜色进行转换之后成为一个新的颜色. 打一个比方,比如原始颜色是红色(r:255,g:0,b:0),进行转换后变为 ...

  6. 如何在Linux下Redis安装

    转载出于:http://blog.csdn.net/jiangguilong2000/article/details/8114740 redis作为NoSQL数据库的一种应用,响应速度和命中率上还是比 ...

  7. boot cd_rom struct

    资料: 1.introduction_to_iso9660.pdf 2.boot-cdrom.pdf Normal ISO9600:offset: 16*2048[0x8000] The Primar ...

  8. 【进阶修炼】——改善C#程序质量(8)

    122,以<Company>.<Component>作为命名空间. 如Microsoft.Windows.Design.也可以用域名作为空间,如www.microsoft.co ...

  9. win7 64位操作系统中 Oracle 11g 安装教程(图解)

    1.下载Oracle 11g R2 for Windows版本,下载地址如下 官方网站: http://download.oracle.com/otn/nt/oracle11g/112010/win3 ...

  10. R语言入门 一些基本的操作

    1 R的下载.安转 R有很多的版本,支持目前主流的操作系统MAC.Linux和WINDOWS系列.因为我个人是在WINDOWS下用R的,所以在这里将只介绍WINDOWS下R的下载&安装. 下载 ...