《图解HTTP》笔记:确认访问用户身份的认证

8.1 何为认证

某些 Web 页面只想让特定的人浏览,必不可少的就是认证功能。

核对的信息通常是指:密码,动态令牌,数字证书,生物认证,IC 卡等。

HTTP 使用的认证方式 :

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

8.2 BASIC 认证

BASIC 认证是从 HTTP/1.0 就定义的认证方式,是 Web 服务器与通信客户端之间进行的认证方式。

认证步骤:

不足之处:

  • BASIC 认证虽然采用 Base64 编码方式,但这不是加密处理,不需要任何附加信息即可对其解码。
  • 想再进行一次 BASIC 认证时,一般的浏览器却无法实现认证注销操作

综上:BASIC 认证使用上不够便捷灵活,安全性等级也不高,因此它并不常用。 

8.3 DIGEST 认证

 DIGEST 认证同样使用质询 / 响应的方式 ,但不会像 BASIC 认证那样直接发送明文密码。

认证步骤:

不足之处:

  • DIGEST 认证提供防止密码被窃听的保护机制,但并不存在防止用户伪装的保护机制
  • 使用上不够便捷灵活

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

8.4 SSL 客户端认证

SSL 客户端认证是借由 HTTPS 的客户端证书完成认证的方式。

认证步骤:

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

采用双因素认证

在多数情况下,SSL 客户端认证不会仅依靠证书完成认证,一般会和基于表单认证组合形成一种双因素认证来使用。

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

必要的费用 

客户端证书需要支付一 定费用才能使用 

8.5 基于表单认证

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

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

背景:

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

使用基于表单的认证:

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

Session 管理及 Cookie 应用:

由于基于表单认证的标准规范尚未有定论,所以一般会使用 Cookie 来管理 Session

Session 管理及 Cookie 状态管理的具体步骤:

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

Java企业场景下的实战入门课(Spring Boot+Redis)

04-20
<p> 企业场景下的Java实战课程!  </p> <p> 【超实用课程内容】 本课程主要是从最基础的技术要点一步一个脚印的介绍Spring Boot2.0相关的核心技术栈和缓存中间件Redis常见且典型的数据结构、相关的核心技术栈及典型的应用场景的实战。并附带业务场景实战用户注册和点赞系统中点赞功能模块的设计与实现为各位小伙伴提供企业级项目开发中常见且典型的Java核心技术,可以说是拒绝纸上谈兵、注重实战并学以致用!  </p> <p> <br> </p> <p> 套餐中一共包含2门实战入门课程(共82讲)  </p> <p> 课程1:《Java实战之Spring Boot入门到精通》  </p> <p> 课程2:《Java实战之Redis入门到精通》  </p> <p> <br> </p> <p> 【基础要求】  </p> <p> 1、基本要求:具备一定的JavaSE以及Java Web项目的开发基础、了解spring boot更佳  </p> <p> 2、工具要求:会使用Intellij IDEA、Navicat以及Postman  </p> <p> <br> </p> <p> 【你能收获到什么?】  </p> <p> 1、帮助学员了解并掌握springboot和缓存中间件Redis的方方面面、包括其典型及常用的数据结构及其在实际项目开发中典型的应用场景!  </p> <p> 2、掌握如何基于Spring Boot搭建企业级项目,整合加入中间件Redis相关的依赖配置,并以此为扩展,为后续学习其他中间件做铺垫;可以提升学员Java中间件的实战能力。  </p> <p> 3、帮助学员了解并掌握缓存中间件Redis在实际应用中有哪些常见、典型的应用场景,如对象信息存储、列表存储、队列特性分发消息、试题库随机获取、排行榜等等,这对于学员在平时项目开发、跳槽面试等情况下将有很大的帮助  </p> <p> 4、本课程介绍的基于Redis相关数据结构的特性独立设计并实战项目中典型功能模块,如会员到期自动提醒、点赞功能模块等内容,将有助于学员将所学的技术栈真正应用到实际中、提升自身的数据库设计能力、业务理解能力、代码实战能力以及性能优化方面的能力  </p> <p> <br> </p> <p> 【课程如何观看?】  </p> <p> 1、登录CSDN学院 APP 在我的课程中进行学习;  </p> <p> 2、移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长 【资料开放】 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 下载方式:电脑登录课程观看页面,点击右下方课程资料、代码、课件等打包下载 </p> <p> <img src="https://img-bss.csdn.net/202004200821078434.png" alt=""> </p>
©️2020 CSDN 皮肤主题: 技术工厂 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值