Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 是否允许客户端在摘要HTTP身份验证中选择质询(nonce)?_Security_Http_Digest_Digest Authentication - Fatal编程技术网

Security 是否允许客户端在摘要HTTP身份验证中选择质询(nonce)?

Security 是否允许客户端在摘要HTTP身份验证中选择质询(nonce)?,security,http,digest,digest-authentication,Security,Http,Digest,Digest Authentication,摘要身份验证看起来像是一种挑战-响应机制:有一个随机字符串,由客户端和服务器与密码(MD5或其他)混合,只有这种混合的结果通过网络发送 通常,质询(“nonce”)由服务器选择并发送到客户端。在摘要身份验证中列出了一个示例“会话”-质询(“nonce”)由那里的服务器选择。我在我的机器上对IIS进行了相同的测试-同样,挑战是由IIS生成的 但是在一些帖子中,质询是由客户机生成的——客户机只是生成一个随机字符串,并发送一个带有质询以及密码和质询乘积的请求 后者是否被允许和广泛接受?是否允许客户端选

摘要身份验证看起来像是一种挑战-响应机制:有一个随机字符串,由客户端和服务器与密码(MD5或其他)混合,只有这种混合的结果通过网络发送

通常,质询(“nonce”)由服务器选择并发送到客户端。在摘要身份验证中列出了一个示例“会话”-质询(“nonce”)由那里的服务器选择。我在我的机器上对IIS进行了相同的测试-同样,挑战是由IIS生成的

但是在一些帖子中,质询是由客户机生成的——客户机只是生成一个随机字符串,并发送一个带有质询以及密码和质询乘积的请求


后者是否被允许和广泛接受?是否允许客户端选择质询(“nonce”)?

在HTTP摘要身份验证中,服务器始终生成nonce

但是,HTTP身份验证是可扩展的,应用程序可以实现其他身份验证方法(基本和摘要除外)。在您链接到的示例中,客户端正在使用(主要基于SOAP的)web服务的一种身份验证形式进行身份验证。在WSSE中,客户端生成nonce。

仅是单向身份验证,其中客户端向服务器进行自身身份验证,而不是相反。只有服务器发出客户机需要正确响应才能进行身份验证的质询。因此,只有服务器知道客户端是否可信,但客户端不知道服务器是否可信

现在,链接代码的作用正好相反:客户机向服务器发出一个验证请求。因此,客户机知道服务器是否可信


最好是使用。

在链接的示例中,客户端根本不会向服务器发出质询,而是先发制人地从服务器发出质询。@Phil:你确定吗?这意味着客户机可以真正选择任何一个nonce来进行身份验证。那么真实性验证在服务器端是什么样子的呢?幸运的是,通信是通过HTTPS进行的。请阅读我在回答中链接到的WSSE文章。客户端传输其密码散列和nonce,服务器使用它们生成自己的密码散列,以与客户端发送的密码散列进行比较。它允许对摘要进行一些小的优化:从服务器获取nonce不需要额外的往返。@Gumbo:哪一方发出nonce并不重要。nonce被发送给另一方,双方构造nonce和secret的乘积,客户端也将该乘积发送给服务器,服务器验证它是否与自己构造的乘积匹配。@sharptooth:这很重要。如果一旦可以进行重放攻击,就没有真正使用nonce(实际上,这是nonce的唯一用途)。因此,服务器必须记住已经使用过的nonce。在这种情况下,如果服务器只需要记住它实际发出的那些nonce就更好了。