摘要和基本身份validation有什么区别?

摘要基本身份validation有什么区别?

摘要式身份validation通过对用户名,密码,服务器提供的随机数值,HTTP方法和请求的URI应用散列函数,以encryptionforms传递凭证。

基本身份validation使用未encryption的base64编码。

因此,基本身份validation通常只应用于提供传输层安全性(如https)的情况。

有关所有血腥详细信息,请参阅RFC-2617 。

HTTP基本访问validation

  • 第1步 :客户端发出信息请求,以明文forms向服务器发送用户名和密码
  • 第2步 :服务器响应所需的信息或错误

HTTP Basic不需要通过SSL来实现,但是如果你不这样做的话,它不是安全的。 所以我甚至不会考虑没有使用它的想法。

优点:

  • 它的实现很简单,所以你的客户开发人员可以减less工作量,减less交付时间,所以开发人员可能更愿意使用你的API
  • 与摘要不同,您可以使用任何您喜欢的encryption方法将密码存储在服务器上,例如bcrypt,使密码更安全
  • 只需要调用服务器来获取信息,使客户端比更复杂的authentication方法稍微快一些

缺点:

  • SSL比基本的HTTP运行速度慢,所以这会导致客户端稍微慢一点
  • 如果您无法控制客户端,并且无法强制服务器使用SSL,则开发人员可能不会使用SSL,从而导致安全风险

总结 – 如果你有控制客户端,或者可以确保他们使用SSL,HTTP Basic是一个不错的select。 SSL的缓慢度可以通过仅提出一个请求的速度来抵消

HTTP摘要访问authentication
HTTP摘要访问身份validation是一种更复杂的身份validationforms,其工作方式如下:

  • 第1步 :客户端向服务器发送请求
  • 第二步 :服务器响应一个特殊的代码(称为nonce,即只使用一次 ),另一个string代表领域 (哈希),并要求客户端进行身份validation
  • 第3步:客户响应这个随机数和encryption版本的用户名,密码和领域(哈希)
  • 步骤4 :如果客户端哈希匹配他们自己的用户名,密码和领域的散列,服务器响应请求的信息,或者如果不是

优点:

  • 没有用户名或密码以明文forms发送到服务器,使得非SSL连接比不通过SSL发送的HTTP基本请求更安全。 这意味着SSL不是必需的,这使每个呼叫稍微快一点

缺点:

  • 对于每个需要的调用,客户端必须调用2,使得进程稍微比HTTP Basic慢
  • HTTP摘要容易受到中间人攻击,基本上意味着它可能被黑客入侵
  • HTTP摘要防止使用强密码encryption,这意味着存储在服务器上的密码可能被黑客入侵

总之 ,HTTP Digest本质上至less容易受到两次攻击,而使用HTTP Basic over SSL的密码进行高度encryption的服务器不太可能共享这些漏洞。

如果您无法控制客户端,则可以尝试执行不使用SSL的基本身份validation,这比“摘要”要安全得多。

资源

让我们看看使用Wireshark (工具来分析发送或接收的数据包)的两个HTTP身份validation之间的区别。

1. Http基本authentication

基本

只要客户端input正确的用户名:密码 ,就像Web服务器所要求的那样,Web服务器检查数据库中的凭证是否正确,并提供对资源的访问。

这是如何发送和接收数据包:

在这里输入图像说明 在第一个数据包中,客户端使用POST方法在资源 – lab/webapp/basicauth填充凭证。返回时,服务器以http响应代码200 ok回应,即用户名:password是正确的。

HTTP数据包的细节

现在,在Authorization标头中,它显示它是基本授权,随后是一些随机string。此string是凭证admin:aadd (包括冒号)的编码(Base64)版本。

2。 Http摘要authentication (rfc 2069)

到目前为止,我们已经看到,基本authentication通过networking以明文forms发送用户名:密码 。但是,摘要authentication使用哈希algorithm发送密码的哈希。

以下是显示客户端请求和服务器响应的数据包。

消化

只要客户端键入服务器请求的凭证,密码就会使用algorithm转换为response ,然后发送到服务器。如果服务器数据库具有与客户端给出的响应相同的响应,则服务器将访问权限资源,否则401错误。

详细的摘要auth包 在上面的Authorizationresponsestring使用UsernameRealmPasswordhttp-methodURINonce的值计算,如图所示:

响应算法 (冒号包括在内)

因此,我们可以看到,摘要式身份validation更安全,因为它涉及散列(MD5encryption),所以尽pipe在基本身份validation中,数据包嗅探器工具不能嗅探密码,但在Wireshark上显示确切的密码。