黑马程序员技术交流社区

标题: BIGEST认证 [打印本页]

作者: 小江哥    时间: 2018-10-21 14:18
标题: BIGEST认证
本帖最后由 小江哥 于 2018-10-21 14:18 编辑

        为了弥补basic认证的弱点,从Http/1.1起就有了DIGEST认证。DIGEST认证同样使用质询/响应的方式,但不会像basic认证那样直接发送明文密码。        质询方式是指一开始一方会先发送认证要求给另一方,接着使用从另一方那接收到的质询码计算生成响应码。最后将响应码返回给对方进行认证的方式。
                                                                                          
        因此发送给对方的只是响应摘要及友质询码产生的计算结果,所以比起basic认证,密码泄漏的可能性就降低了。
DIGEST认证步骤:
                                                   
步骤1:请求需认证的资源时,服务器会随着状态码401返回带有www-authenticate 首部字段的响应。该字段内包含质询方式认证所需的临时质询码。
            首部字段www-authenticate内必须包含realm 和nonce这两个字段的信息。客户端就是依靠向服务器发送这两个值进行认证的。
            nonce是一种每次随返回401响应生成的任意随机字符串。该字符串通常推荐由base64编码的十六进制的组成形式。但实际内容依赖服务器的具体实现。
步骤2:接收到401状态码的客户端,返回的响应中包含DIGEST认证必须的首部字段authorization信息。
         首部字段authorization内必须包含username,realm,nonce,uri和response的字段信息。其中realm和nonce就是从服务器接收到的响应中的字段。
         username 是realm限定范围内可进行认证的用户名。
         uri即request-url的值,但考虑到经代理转发后的值可能被修改,因此事先复制一份保存在uri中。
         response经MD5运算后的密码字符串,形成响应码。
步骤3:接收到包含首部字段authorization 请求的服务器会确认认证信息的正确性。认证通过后会返回包含request-url资源的响应。
          并且这时会在首部字段authentication-info 写入一些认证成功的相关信息。
          DIGEST认证提高了BASIC认证的安全等级,但是和HTTPs的客户端认证相比还是很弱。DIGEST认证提供防止密码被窃听的保护机制,但并不存在防止用户伪装的保护机制。
      






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2