DIGEST认证

为了弥补BASIC认证存在的弱点,从HTTP/1.1起就有了DIGEST认证。DIGEST认证一样使用质询/响应的方式(challenge/response),但不会像BASIC认证那样直接发送明文密码。web

所谓质询响应方式是指,一开始一方会先发送认证要求给另外一方,接着使用从另外一方哪接收到的质询码计算生成响应码。最后将响应吗返回给对方进行认证的方式。安全

由于发送给对方的只是响应摘要及由质询码产生的计算结果,因此比起BASIC认证,密码泄露的可能性就就下降了。服务器

DIGEST认证步骤网站


步骤1: 请求需认证资源时,服务器会随着状态码401Authorization Required ,返回带WWW-Authenticate首部字段的响应。该字段包含质问响应方式认证所需的临时质询码(随机数,nonce)。ui

首部字段WWW-Authenticate内必须包含realm和nonce这两个字段的信息。客户端就是依靠向服务器回送这两个值进行认证。编码

nonce是一种每次随返回的401响应生成的任意随机数字符串。该字符串一般推荐由Base64编码的16进制数的组成形式,但实际内容依赖服务器的具体实现。3d


步骤2:接收到401状态码的客户端,返回的响应包含DIGEST认证必须的首部字段Authorization信息。代理

首部字段Authorization内必须包含username、realm、nonce、uri和response的字段信息。其中,realm和nonce就是以前服务器接收到的响应中的字段。cdn

uesername就是realm限定范围内可进行认证的用户名。blog

uri(digest-uri)即Request-URI的值,但考虑到经代理转发后Request-URL的值就可能被修改,所以会复制一份保存在uri内

response也可叫作Request-Digest,存放通过MD5运算后的密码字符串,造成响应码


步骤3: 接收到包含首部字段Authorization请求的服务器,会确认认证信息的正确性。认证经过后则返回包含Request-URI资源的响应。

而且这时会在首部字段Authenticate-Info写入一些认证成功的相关信息。

DIGEST认证提供了高于BASIC认证的安全等级,可是和HTTPS的客户端认证机制相比仍旧很弱。DIGEST认证提供防止密码被窃听的保护机制,但并不存在防止用户假装的保护机制。

DIGEST认证和BASIC认证同样,使用上不是那么便捷灵活,且达不到多数web网站对高度安全等级的追求标注。所以它的使用范围也有所限制。

相关文章
相关标签/搜索