除了以明文形式发送凭据外,摘要认证与基本认证有何不同?
除了以明文形式发送凭据外,摘要认证与基本认证有何不同?
主要区别在于它不需要以明文形式通过网络发送用户名和密码。此外,由于使用了服务器的一次性数字,它也可以抵御重放攻击。
服务器会给客户端一个一次性使用的数字(nonce),然后将它与用户名、领域、密码和URI请求组合起来。客户端会对这些字段应用MD5哈希方法生成哈希键。
客户端会将此哈希键连同用户名和领域一起发送到服务器以尝试进行身份验证。
服务器使用相同的方法生成哈希键,但是它会从用户数据库中查找期望用户的密码,而不是使用浏览器中输入的密码。它会查找存储在该用户名下的密码,对其运行相同的算法,并将其与客户端发送的内容进行比较。如果匹配,则授予访问权限;否则,它可以发送401未经授权(未登录或登录失败)或403禁止访问(拒绝访问)。
Digest认证已经在RFC2617中标准化。关于它有一个很好的维基百科概述:
你可以这样理解它: