7.HTTP的三种身份认证:基本认证、摘要认证、基于HTTPS的表单认证

身份认证的方式有很多:BasicBearerDigestHOBAMutualNegotiate / NTLMVAPIDSCRAMAWS4-HMAC-SHA256OAuth

1.基本(Basic)认证

.HTTP的三种身份认证:基本认证、摘要认证、基于HTTPS的表单认证"/

基本认证步骤

(1)客户端请求服务器某一受保护的资源。

(2)服务器拒绝提供资源,并对客户端进行质询,返回一条状态为401(Unauthorized)的响应,并在响应header中的WWW-Authenticate中至少说明一种认证方式。

//auth-scheme:认证类型。
WWW-Authenticate: <auth-scheme>
//基本认证示例
WWW-Authenticate: Basic realm=<realm>, charset="UTF-8"

(3)客户端重新发送请求,并在请求header中的Authorization加上用户名、密码等认证参数。用户名和密码与冒号 ( username:password)组合在一起,然后将结果字符串用base64YWxhZGRpbjpvcGVuc2VzYW1l) 编码,从而构造凭据。

//auth-scheme:认证类型,credentials:用户名和密码等凭据。
Authorization: <auth-scheme> <credentials>
//基本认证示例
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l

(4)服务器检验成功后,返回一个正常状态码(如200)的响应,响应包含了请求的URI。

基本认证安全缺陷

(1)通过网络明文发送用户名和密码,虽然进行base-64编码可以隐蔽用户名和密码,但base-64编码是可逆的,很容易进行反向编码。

(2)没有提供对报文内容的防篡改保护,加入报文在传输过程中被代理截获,并被修改了报文的内容,被导致严重后果。

基本认证应用范围

虽然加上https,基本认证的安全有提升,但是基本认证的功能还不够便捷灵活。所以一般内部网站,家用路由器的管理页面,可能使用HTTP基本认证。

2.摘要(Digest)认证

为弥补基本认证的缺点,从HTTP/1.1就有了摘要认证。摘要认证利用摘要算法(如MD5、SHA-256)对用户名、密码、报文内容等做不可逆的编码,来防止重要信息被获取、篡改。

摘要认证步骤

(1)客户端请求服务器某一受保护的资源。

(2)服务器拒绝提供资源,并对客户端进行质询,返回一条状态为401(Unauthorized)的响应,并在响应header中的WWW-Authenticate中放置qop保护质量、algorithm摘要算法、随机数nonce,并说明认证类型。

//qop:服务器支持的保护质量,必须提供这个选项。
//algorithm:用于计算摘要的算法。
//nonce:随机数。
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest
    realm="http-auth@example.org",
    qop="auth, auth-int",
    algorithm=MD5,
    nonce="7ypf/xlj9XXwfDPEoM4URrv/xwf94BcCAzFZH4GiTo0v",
    opaque="FQhe/qaU925kfnzjCev0ciny7QMkPqMAFRtzCUYo5tdS"

(3)客户端选择一种保护质量(auth或者auth-int)加上随机数nonce,计算出密码和其他数据的摘要,将摘要(response)和其他信息放在Authorization头部中。如果客户端还要对服务器进行认证,则随机数生成次数(nc)、生成客户端随机数(cnonce)也放在Authorization中发送服务器。

HA1 = MD5(username:realm:password)
HA2 = MD5(method:digestURI)
reponse = MD5(HA1:nonce:qop:HA2)
Authorization: Digest username="Mufasa",
    realm="http-auth@example.org",
    uri="/dir/index.html",
    algorithm=MD5,
    nonce="7ypf/xlj9XXwfDPEoM4URrv/xwf94BcCAzFZH4GiTo0v",
    nc=00000001,
    cnonce="f2/wE4q74E6zIJEtWaHKaf5wv/H5QzzpXusqGemxURZJ",
    qop=auth,
    response="8ca523f5e9506fed4657c9700eebdbec",
    opaque="FQhe/qaU925kfnzjCev0ciny7QMkPqMAFRtzCUYo5tdS"

(4)服务器收到信息后,计算出摘要,与客户端摘要进行比较,验证是否匹配。另外如果客户端发送cnonce,服务器会再生成一个随机数(nextnonce)出来,然后根据nextnonce、cnonce、实体主体等等生成应答摘要(rspauth),加到Authorization-Info头部中,返回客户端。

(5)客户端收到返回后,再算出摘要,与服务器返回的rspauth比较,验证是否匹配。

摘要认证安全缺陷

无法防止中间人攻击。一个中间人可以告知客户端使用基本认证方式,而摘要认证没有提供任何机制帮助客户端验证服务器的身份。

密码是可逆可还原的保存。很多用户会对不同的服务使用同样的用户名和密码,一旦服务器、客户端的密码被窃取还原,会对其他的服务(比如在线支付)造成很大的威胁。

摘要认证应用范围

摘要认证和基本认证一样,在功能上都不够便捷灵活,且达不到多数Web网站对高度安全等级标准的追求标准。

目前部分建设初期网站、内部网站可能使用摘要认证。

3.基于HTTPS的表单认证

具体详见HTTP的三种状态管理:session-based、cookie-based、token-based

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/basic/http/6451.html

(0)
上一篇 2021年12月3日 23:38
下一篇 2021年12月8日 01:33

相关推荐

  • 5.HTTP请求方法的介绍

    HTTP 定义了一组请求方法, 以表明要对给定资源执行的操作。指示针对给定资源要执行的期望动作. 虽然他们也可以是名词, 但这些请求方法有时被称为HTTP动词. 1.GET方法 请求一个指定资源的表示形式. 使用GET的请求应该只被用于获取数据. 2.HEAD方法 请求一个与GET请求的响应相同的响应,但没有…

    HTTP教程 2020年10月5日
    05240
  • 8.HTTP的三种状态管理:session-based、cookie-based、token-based

    http是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的。当然它知道是哪个客户端ip地址发过来的,但是对于我们的应用来说,我们是靠用户来管理的,而不是靠客户端ip地址来管理的。所以对于我们的应用而言,它是需要有状态管理的,以便服务器能够准确的知道http请求是哪个用户发起的…

    HTTP教程 2021年12月8日
    04540
  • 6.HTTP响应状态码(Status Code)一览表

    HTTP 响应状态代码指示特定 HTTP 请求是否已成功完成。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599)。状态代码由 section 10 of RFC 2616定义…

    HTTP教程 2020年10月6日
    07620

发表评论

登录后才能评论