Atitit HTTP 认证机制基本验证 (Basic Authentication) 和摘要验证 (Digest Authentication)attilax总结

Atitit HTTP 认证机制基本验证 (Basic Authentication) 和摘要验证 (Digest Authentication)attilax总结

 

 

 

1.1. 最广泛使用的是基本验证 (Basic Authentication) 和摘要验证 (Digest Authentication) 1.2. 关于HTTP AUTH的文档不多。

RFC

wiki

1.3. 什么是HTTP基本认证

  桌面应用程序也通过HTTP协议跟Web服务器交互, 桌面应用程序一般不会使用cookie, 而是把 "用户名+冒号+密码"BASE64算法加密后的字符串放在http request 中的header Authorization中发送给服务端, 这种方式叫HTTP基本认证(Basic Authentication)

  当浏览器访问使用基本认证的网站的时候, 浏览器会提示你输入用户名和密码,如下图

 

使用HTTP AUTH需要在server端配置http auth信息(一般是webserver启动的时候从配置文件里面读取相关信息)。我用中文简述一下http auth的过程:

· 客户端发送http请求

· 服务器发现配置了http auth,于是检查request里面有没有"Authorization"http header

· 如果有,则判断Authorization里面的内容是否在用户列表里面,Authorization header的典型数据为"Authorization: Basic jdhaHY0=",其中Basic表示基础认证, jdhaHY0=base64编码的"user:passwd"字符串。

· 如果没有,或者用户密码不对,则返回http code 401页面给客户端

· 标准的http浏览器在收到401页面之后,应该弹出一个对话框让用户输入帐号密码;并在用户点确认的时候再次发出请求,这次请求里面将带上Authorization header

 

一次典型的访问场景是:

· 浏览器发送http请求(没有Authorization header

· 服务器端返回401页面

· 浏览器弹出认证对话框

· 用户输入帐号密码,并点确认

· 浏览器再次发出http请求(带着Authorization header

· 服务器端认证通过,并返回页面

· 浏览器显示页面

1.4. 适用场合 路由器 摄像头

使用http auth的场景不会用cookie,也就是说每次都会送帐号密码信息过去。然后我们都知道base64编码基本上等于明文。这削弱了安全。

由于种种缺点,http auth现在用的并不多。不过在路由器等场合还是有应用的,原因是http auth最简单,使用起来几乎是零成本。

 

 

  BASIC认证概述

HTTP协议进行通信的过程中,HTTP协议定义了基本认证过程以允许HTTP服务器对WEB浏览器进行用户身份证的方法,当一个客户端向HTTP服务 器进行数据请求时,如果客户端未被认证,则HTTP服务器将通过基本认证过程对客户端的用户名及密码进行验证,以决定用户是否合法。客户端在接收到HTTP服务器的身份认证要求后,会提示用户输入用户名及密码,然后将用户名及密码以BASE64加密,加密后的密文将附加于请求信息中, 如当用户名为anjuta,密码为:123456时,客户端将用户名和密码用合并,并将合并后的字符串用BASE64加密为密文,并于每次请求数据 时,将密文附加于请求头(Request Header)中。HTTP服务器在每次收到请求包后,根据协议取得客户端附加的用户信息(BASE64加密的用户名和密码),解开请求包,对用户名及密码进行验证,如果用 户名及密码正确,则根据客户端请求,返回客户端所需要的数据;否则,返回错误代码或重新要求客户端提供用户名及密码。

 

二.   BASIC认证的过程

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgfyzs.html