HTTP的认证机制

  计算机本身无法判断使用者的身份,这时就需要使用者“自报家门”,通常需要核对的信息有这些:

  ① 密码:只有本人才会知道的字符串信息。

  ② 动态令牌:仅限本人持有的设备内显示的一次性密码。

  ③ 数字证书:仅限本人(终端)持有的信息。

  ④ 生物认证:指纹和虹膜等本人的生理信息。

  ⑤ IC卡等:仅限本人持有的信息。

  而HTTP/1.1使用的认证方式有这些:

  ① BASIC认证(基本认证)。

  ② DIGEST认证(摘要认证)。

  ③ SSL客户端认证。

  ④ FormBase认证(基于表单认证)。

  ⑤ WIndows统一认证(《图解HTTP》里面没有讲解,再次也先不对其进行介绍)
  

  BASIC认证

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

  步骤① 当请求的资源需要BASIC认证时,服务器会随状态码401Authorization Required,返回带WWW-Authenticate首部字段的响应。该字段内包含认证的方式(BASIC)及Request-URI安全域字符串。

  步骤② 接收到状态码401的客户端为了通过BASIC认证,需要将用户ID及密码发送给服务器。发送的字符串内容是由用户ID和密码构成,两者中间以冒号(:)连接后,再经过Base64编码处理。

  步骤③ 接受到包含首部字段Authorization请求的服务器,会对认证信息的正确性进行验证。如验证通过,则返回一条包含Request-URI资源的响应。

  BASIC认证虽然采用Base64编码方式,但这不是加密处理。不需要任何附加信息即可对其解码,所以很容易被别人盗取信息,而且,想在进行一次BASIC认证时,一般的浏览器却无法实现认证注销操作。

  于是,DIGEST认证诞生了。

  DIGEST认证

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

  所谓质询响应方式是指,一开始一方会先发送认证要求给另一方,接着使用从另一方那里接收到的质询吗计算生成响应码。最后将响应码返回给对方进行认证的方式。因为发送给对方的知识响应摘要及由质询码产生的计算结果,所以比起BASIC认证,密码泄露的可能性就降低了。

  步骤① 请求需认证的资源时,服务器会随着状态码401,返回带WWW-Authenticate首部字段的响应。该字段内包含质问响应方式认证所需的临时质询码。首部字段WWW-Authenticate内必须包含realm和nonce这两个字段的信息。客户端就是依靠向服务器回送这两个值进行认证的。nonce是一种每次随返回的401响应生成的任意随机字符串。该字符串通常推荐由Base64编码的十六进制数的组成形式,但实际内容依赖服务器的具体实现。

  步骤② 接收到401状态码的客户端,返回的响应中包含DIGEST认证必须的首部字段Authorization信息。首部字段Authorization内必须包含username、realm、nonce、uri和response的字段信息。其中,realm和nonce就是之前从服务器接收到的响应中的字段。

  步骤③ 接收到包含首部字段Authorization请求的服务器,会确认认证信息的正确性。认证通过后则返回包含Request-URI资源的响应。并且这时会在首部字段Authentication-Info写入一些认证成功的相关信息。DIGEST认证提供了高于BASIC认证的安全等级,但是和HTTPS的客户端认证相比仍旧很弱。DIGEST认证提供防止密码被窃听的保护机制,但并不存在防止用户伪装的保护机制。

  SSL客户端认证

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

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

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

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

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

  而且一般SSL客户端认证会和基于表单认证组合形成一种双因素认证来使用。也就是说,第一个认证因素的SSL客户端证书用来认证客户端计算机,另一个认证因素的密码则用来确定这是用户本人的行为。通过双因素认证后,就可以确认是用户本人正在使用匹配正确的计算机访问服务器。

  基于表单认证

  多数情况下,输入已事先登陆的用户ID和密码等登陆信息后,发送给Web应用程序,基于认证结果来决定认证是否成功。基于表单认证的标准规范尚未有定论,一般会使用Cookie来管理Session。

  基于表单认证本身是通过服务器端的Web应用,将客户端发送过来的用户ID和密码与之前登陆过的信息做匹配来进行认证的。但是结余HTTP是无状态协议,所以我们会使用Cookie来管理Session,以弥补HTTP协议中不存在的状态管理功能。

 

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

  步骤② 服务器会发放用以识别用户的Session ID。通过客户端发送过来的登录信息进行身份认证,然后把用户的认证状态与SessionID绑定后记录在服务器端。向客户端返回响应时,会在首部字段Set-Cookie内写入Session ID。

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

原文地址:https://www.cnblogs.com/NYfor2018/p/8279008.html

时间: 2024-10-11 21:57:14

HTTP的认证机制的相关文章

[CentOS 7系列]使用密钥认证机制远程登录

当服务器操作系统没有配置远程密钥认证时,默认需要手动输入密码口令. 以下用putty为例: 1.使用putty远程ssh登录192.168.137.100这台主机 2.第一次登录选择"是(Y)",信任该主机,缓存该主机登录信息. 3.登录时,要输入正确的账户和口令,才能正常登录该主机. 下面使用putty和xshell演示如何使用密钥机制远程登录: 一.使用putty密钥认证机制登录 1.打开putty安装目录中的putty key generator软件,点击"Genera

Xshell使用密钥认证机制远程登录Linux

密钥认证是Linux下ssh服务支持的一种安全认证机制.它使用一对加密字符串,一个称为公钥(publickey),用于加密:另一个称为密钥(privatekey),只有创建者才能拥有使用,其用于解密.那么如何使用密钥认证登陆Linux呢? 1.下Xshell软件 在www.baidu.com搜索框内输入xshell,出现搜素结果后,点击高速下载或者普通下载,开始下载xshell软件. 2.安装xshell软件 Xshell支持多国语言版本,且可以免费获得.在安装时要注意选择免费版本,即"免费为家

HDFS内部的认证机制

前言 数据的安全性是一直被大家所重视的.对于一个存有大规模数据量的成熟企业来说,如何做到数据不丢失,不损坏,不窃取就显得格外重要了.而HDFS恰恰满足了"海量数据规模"的特点,所以如果我们用HDFS存储大量的非结构化的数据,我们如何保证其中数据的安全性呢?在之前的文章中,有提到过一个"Encryption Zone"数据加密空间的概念.Encryption Zone可以保证用户在指定的加密空间路径下,数据是被加/解密的,而且对于用户来说完全透明.详细信息可点击HDF

PAM认证机制

PAM:Pluggable Authentication Modules 认证库:文本文件,MySQL,NIS,LDAP等 PAM 是关注如何为服务验证用户的API,通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开 使得系统管理员可以灵活地根据需要给不同的服务配置不 同的认证方式而无需更改服务程序 它提供了对所有服务进行认证的中央机制,适用于login,远 程登录(telnet,rlogin,fsh,ftp,点对点协议(PPP)),su等 应用程序中.系统管理员通

基于Token的WEB后台认证机制

几种常用的认证机制 HTTP Basic Auth HTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RESTful API 使用的最简单的认证方式,只需提供用户名密码即可,但由于有把用户名密码暴露给第三方客户端的风险,在生产环境下被使用的越来越少.因此,在开发对外开放的RESTful API时,尽量避免采用HTTP Basic Auth OAuth OAuth(开放授权)是一个开放的授权标准,允许用户让

web安全认证机制知多少

如今web服务随处可见,成千上万的web程序被部署到公网上供用户访问,有些系统只针对指定用户开放,属于安全级别较高的web应用,他们需要有一种认证机制以保护系统资源的安全,本文将探讨五种常用的认证机制及优缺点. Basic模式 HTTP协议规范中有两种认证方式,一种是Basic认证,另外一种是Digest认证,这两种方式都属于无状态认证方式,所谓无状态即服务端都不会在会话中记录相关信息,客户端每次访问都需要将用户名和密码放置报文一同发送给服务端,但这并不表示你在浏览器中每次访问都要自己输入用户名

CAS 实现单点登录(SSO)数据库查询认证机制-xml方式(三)

继前面介绍过基于CAS实现单点登录(SSO)的实例演示,演示过程中服务端认证机制采用的是默认配置即CAS Servier默认用户名和密码一致即可登录成功,那么本文将侧重于应用方面,真正通过查询用户名密码来进程验证用户是否可以登录. CAS Server添加相关的jar包 需要在web项目的lib下添加两个包:cas-server-support-jdbc-x.x.x.jar和 mysql-connector-java-x.x.x-bin.jar(具体版本号根据情况而定) 修改CAS Server

无线WIFI WPS认证机制破解

1. WPS认证机制 WPS(Wi-Fi Protected Setup,Wi-Fi保护设置)(有的叫做AOSS.有的叫做QSS,不过功能都一致.)是由Wi-Fi联盟组织实施的认证项目,主要致力于简化无线局域网的安装及安全性能配置工作.在传统方式下,用户新建一个无线网络时,必须在接入点手动设置网络名(SSID)和安全密钥,然后在客户端验证密钥以阻止"不速之客"的闯入.这整个过程需要用户具备Wi-Fi设备的背景知识和修改必要配置的能力.Wi- Fi Protected Setup能帮助用

基于basic认证机制配置httpd服务器拥有用户访问控制功能

  实验须知:     实验主机:192.168.1.11   1. 配置httpd基于用户的访问控制----basic认证机制   (1)安装httpd程序,并启动服务 #yum install httpd–y [[email protected] ~]# servicehttpd start Starting httpd:httpd: Could not reliably determine the server's fully qualified domain name,using 172

elasticsearch httpclient认证机制

最近公司单位搬迁,所有的服务都停止了,我负责的elasticsearch不知道怎么回事,一直不能运行呢,因此,我一直在负责调试工作.经过两天的调试工作,我发现新的服务器增加了httpclient认证机制,经过几次研究,发现服务器的新增了如下内容: http.basic.log: false http.basic.user: "hett" http.basic.password: "****" 因此,每次在进行ik拆分词的时候会有提示信息就是:http没有认证,因此,