图解HTTP学习笔记——确认访问用户身份的认证

前言

认证功能能让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://www.cnblogs.com/JohnTsai/p/4919369.html

时间: 2024-10-30 22:36:01

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

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

简单的HTTP协议 前言 最近在学习Web开发的相关知识,发现<图解HTTP>这本书通俗易懂.所以花时间学习这本书,并记录下学习笔记. 如上图,我们每天都在浏览网页,一般我们都是在浏览器地址栏输入要访问的网站的地址(如百度),按下回车,浏览器就显示了我们要访问的网站的网页. 那么在我们敲下回车键的那一刻,究竟发生了什么呢.通过今天的学习,能大致了解其中原理,并简单学习HTTP协议. 目录 1.客户端与服务器端2.HTTP是不保存状态的协议3.请求URI定位资源4.告知服务器意图的HTTP方法5

PHP学习笔记 用户注册模块用户类以及验证码类_php技巧

所以,把第一章,可重用类的代码贴出来,便于以后查阅以及供给有需要的朋友. :User类,包括读取和设置数据库,以及保存更改交互 复制代码 代码如下: <?php class User{ private $uid; private $fields; public function __construct(){ $this->uid=null; $this->fields=array('username'=>'','password'=>'','emailAddr'=>''

新浪微博携手国政通 推V用户身份通认证服务

中介交易 SEO诊断 淘宝客 云主机 技术大厅 11月16日,新浪微博与电子诚信信息服务提供商国政通公司共同宣布,就共同建立微博信用体系合作正式签约,面向新浪微博V用户推出身份通认证服务,这标志着新浪微博在微博诚信体系建设中率先迈出了关键的一步. 国政通身份通服务,是一项"保护隐私.展现真实",有效保护用户身份信息防冒用的"互联网身份证"服务,目前已广泛应用各大婚恋交友.招聘及电子商务网站.此外,国政通拥有国际领先水平的信用评级评分技术,可帮助新浪微博建立一套完善的

【Linux】Linux用户、用户组、文件权限学习笔记

原文地址:http://www.sourcejoy.com/other_dev_tech/linux-user-and-file-manage.html 作者:HaiHai 发布时间:August 12, 2010 分类:综合技术 最近打算更仔细学习一下linux操作系统.先是恶补了一下用户.用户组.文件权限这三样比较重要的知识. 学习这几样东西,得先掌握linux的权限系统相关知识. linux的权限系统主要是由用户.用户组和权限组成. 用户就是一个个的登录并使用linux的用户.linux内

RHCE 学习笔记(5)- 本地用户和组的管理

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://beanxyz.blog.51cto.com/5570417/1593632 这一节跟老师学习了RHEL7的用户管理 在windows里面,用户信息和密码是保存C:\windows\system32\config\sam 中,类似的,RHEL是将信息保存在 /etc/passwd 和 /etc/shadow 里面 管理用户可以通过图形界面或者命令行,首先我们看看图形工具 安装 d

php5学习笔记(转)

php5|笔记 作者: whhwq在phpv.net看到的感觉不错/*+-------------------------------------------------------------------------------+| = 本文为Haohappy读<<Core PHP Programming>> | = 中Classes and Objects一章的笔记 | = 翻译为主+个人心得 | = 为避免可能发生的不必要的麻烦请勿转载,谢谢 | = 欢迎批评指正,希望和所有

作为一个新手的Oracle(DBA)学习笔记

Oracle数据库笔记 Jack Chaing 作者QQ595696297 交流群 127591054 祝大家学习进步. 如果大家想看Word版本的可以去下载:Word排版比较清晰一些. http://download.csdn.net/detail/jack__chiang/9810532 此笔记是作者本人去年开始从一个DBA新人的学习笔记,积累至今,希望拿出来给那些对DBA有兴趣的童孩学习,大家一起努力嘛. 此笔记记录了作者工作学习中从零基础的学习的记录,和从中遇见的问题与问题的解决!很高兴

RHCE 学习笔记(10) 远程访问

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://beanxyz.blog.51cto.com/5570417/1598056 这一节学习了如何在Linux和windows下对RHEL进行远程访问.主要包括了SSH的密码,密钥访问,XShell以及VNC的使用 首先来看看Linux下如何远程访问另外一台服务器. 现在我有两条服务器 rhce7-00 和 rhce7-01,IP地址如下所示 rhce7-01 rhce7-00 从0

我的Android进阶之旅------&amp;gt;Android中编解码学习笔记

编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等.最近因为项目的关系,需要理清媒体的codec,比较搞的是,在豆丁网上看运营商的规范 标准,同一运营商同样的业务在不同文档中不同的要求,而且有些要求就我看来应当是历史的延续,也就是现在已经很少采用了.所以豆丁上看不出所以然,从 wiki上查.中文的wiki信息量有限,很短,而wiki的英文内容内多,