Dot*_*cer 176 authentication https http basic-authentication digest-authentication
摘要和基本身份验证有什么区别?
Pre*_*raj 100
HTTP基本访问身份验证
基本身份验证使用base64编码(非加密)生成包含用户名和密码信息的加密字符串.HTTP Basic不需要通过SSL实现,但如果不这样做,则根本不安全.所以我甚至不会接受没有使用它的想法.
优点:
缺点:
总结 - 如果您可以控制客户端,或者可以确保它们使用SSL,则HTTP Basic是一个不错的选择.SSL的缓慢可以通过仅发出一个请求的速度来消除
基本认证的语法
Value = username:password
Encoded Value = base64(Value)
Authorization Value = Basic <Encoded Value>
//at last Authorization key/value map added to http header as follows
Authorization: <Authorization Value>
Run Code Online (Sandbox Code Playgroud)
HTTP摘要访问认证
摘要访问认证使用散列(即,摘要意味着切成小块)方法来生成加密结果.HTTP摘要访问身份验证是一种更复杂的身份验证形式,其工作方式如下:
优点:
缺点:
在摘要中,HTTP Digest本质上容易受到至少两次攻击,而使用SSL加密基本密码的服务器的服务器不太可能共享这些漏洞.
如果您无法控制客户端,则可以尝试在不使用SSL的情况下执行基本身份验证,这比Digest安全性低得多.
RFC 2069摘要访问身份验证语法
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)
Run Code Online (Sandbox Code Playgroud)
RFC 2617摘要访问身份验证语法
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added
Run Code Online (Sandbox Code Playgroud)
邮递员看起来如下:
注意:
BoR*_*Ris 38
让我们看一下两个HTTP身份验证之间的区别Wireshark(使用工具分析发送或接收的数据包).
1. Http基本身份验证
一旦客户端输入正确的用户名:密码,按照Web服务器的要求,Web服务器就会在数据库中检查凭据是否正确并提供对资源的访问权限.
以下是数据包的发送和接收方式:
在第一个数据包中,客户端使用资源上的POST方法填充凭证- lab/webapp/basicauth.返回时,服务器回复http响应代码200 ok,即用户名:密码是正确的.
现在,在Authorization标题中显示它是基本授权,后跟一些随机字符串.此字符串是凭证(包括冒号)的编码(Base64)版本admin:aadd.
2.Http摘要认证(rfc 2069)
到目前为止,我们已经看到基本身份验证通过网络以明文方式发送用户名:密码.但是摘要身份验证使用哈希算法发送密码的HASH.
以下是显示客户端发出的请求和服务器响应的数据包.
一旦客户端键入服务器请求的凭据,密码就会转换为response使用算法的a 然后发送到服务器.如果服务器数据库具有与客户端给出的响应相同的响应,则服务器可以访问资源,否则401错误.
另外,在上述Authorization中,response字符串使用的值来计算Username,Realm,Password,http-method,URI和Nonce作为图像中所示:
因此,我们可以看到摘要式身份验证更安全,因为它涉及哈希(MD5加密),因此数据包嗅探器工具无法嗅探密码,尽管在Basic Auth中确切的密码显示在Wireshark上.