Http 摘要身份验证和基本身份验证之间有什么区别?
摘要身份验证和基本身份验证之间的区别是什么?摘要身份验证通过对用户名、密码、服务器提供的nonce值、HTTP方法和请求的URI应用哈希函数,以加密形式传递凭据 而基本身份验证使用非加密的base64编码 因此,基本身份验证通常只应在提供传输层安全性(如https)的情况下使用Http 摘要身份验证和基本身份验证之间有什么区别?,http,authentication,https,basic-authentication,digest-authentication,nonce,Http,Authentication,Https,Basic Authentication,Digest Authentication,Nonce,摘要身份验证和基本身份验证之间的区别是什么?摘要身份验证通过对用户名、密码、服务器提供的nonce值、HTTP方法和请求的URI应用哈希函数,以加密形式传递凭据 而基本身份验证使用非加密的base64编码 因此,基本身份验证通常只应在提供传输层安全性(如https)的情况下使用 查看所有血淋淋的细节 HTTP基本访问身份验证 步骤1:客户端请求信息,以明文形式向服务器发送用户名和密码 步骤2:服务器响应所需信息或错误 基本身份验证使用base64编码(非加密)生成包含用户名和密码信息的加密字
查看所有血淋淋的细节 HTTP基本访问身份验证
- 步骤1:客户端请求信息,以明文形式向服务器发送用户名和密码
- 步骤2:服务器响应所需信息或错误
- 它易于实现,因此您的客户机开发人员要做的工作更少,交付的时间也更少,因此开发人员可能更愿意使用您的API
- 与Digest不同,您可以在服务器上以您喜欢的任何加密方法(如bcrypt)存储密码,从而使密码更加安全
- 只需对服务器进行一次调用即可获取信息,这使得客户端的速度略快于更复杂的身份验证方法
- SSL的运行速度比基本HTTP慢,因此这会导致客户端稍慢
- 如果您无法控制客户端,并且无法强制服务器使用SSL,则开发人员可能不会使用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>
RFC 2617摘要访问身份验证语法
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added
及
《邮递员》中的内容如下:
注意:
- 基本和摘要方案专用于使用用户名和密码进行身份验证
- 承载方案专用于使用令牌进行身份验证
Wireshark
(用于分析发送或接收的数据包的工具)进行的两种HTTP身份验证之间的区别
1。Http基本身份验证
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>
只要客户端按照Web服务器的请求键入正确的用户名:密码,Web服务器就会检查数据库中的凭据是否正确,并授予对资源的访问权
以下是数据包的发送和接收方式:
在第一个数据包中,客户端使用resource-lab/webapp/basicauth
上的POST方法填写凭据。作为回报,服务器使用http响应代码200 ok,即用户名:密码正确
现在,在Authorization
标题中,它显示它是BasicAuthorization,后跟一些随机字符串。这个字符串是编码(Base64)版本的凭证admin:aadd
(包括冒号)
2。Http摘要身份验证(rfc 2069)
到目前为止,我们已经看到基本身份验证通过网络以明文形式发送用户名:密码。但是摘要身份验证使用哈希算法发送密码的哈希
以下是显示客户端发出的请求和服务器响应的数据包
一旦客户机键入服务器请求的凭据,密码将使用算法转换为响应
,然后发送到服务器,如果服务器数据库的响应与客户机给出的响应相同,服务器将授予对资源的访问权,否则将出现401错误
在上述授权
中,响应
字符串是使用用户名
、领域
、密码
、http方法
、URI
和Nonce
的值计算的,如图所示:
(包括冒号)
因此,我们可以看到摘要身份验证更安全,因为它涉及哈希(MD5加密),因此,数据包嗅探器工具无法嗅探密码,尽管在基本身份验证中,确切的密码显示在Wireshark上。基本身份验证使用base生成包含用户名和密码信息的加密字符串
摘要访问身份验证使用哈希方法生成加密结果基本身份验证如何不加密?我用这个网站来解码用户名和密码,数据编码和加密是不一样的。您可以使用该站点解码凭据,这表明凭据未加密。@Andy“解码凭据”是什么意思?散列凭据无法解码…对,而且basic auth不使用散列凭据,它们是base64编码的。@DotFreeler简单地说,加密需要密钥才能使用特定方法解密,而编码只需要该方法。如果接收加密消息的人没有密钥,则无法恢复(解密)该消息。在web服务器上,即使您无法控制客户端,您是否可以将所有http请求重定向到https?我想得更多