摘要式身份验证看起来像挑战 - 响应机制的风格:theres是一个随机字符串,它与客户端和服务器的密码(MD5或其他东西)混合在一起,只有通过网络发送这种混合的结果。
通常,挑战(“nonce”)由服务器选择并发送给客户端。关于摘要验证的Wikipedia article列出了一个示例“会话” - 服务器在那里选择了挑战(“随机数”)。我在我的机器上用IIS测试了同样的东西 - 再次,IIS产生了挑战。
但是在某些帖子中like this one挑战是由客户端生成的 - 客户端只是生成一个随机字符串,并发送一个请求,其中包含质询以及密码和挑战的产品。
后者是否被允许并被广泛接受?是否允许客户选择挑战(“nonce”)?
答案 0 :(得分:2)
在HTTP摘要式身份验证中,服务器始终生成随机数。
但是,HTTP身份验证是可扩展的,应用程序可以实现其他身份验证方法(超出基本和摘要)。在您链接到的示例中,客户端使用WSSE进行身份验证,{{3}}是一种(主要是基于SOAP的)Web服务的身份验证形式。在WSSE中,客户端生成随机数。
答案 1 :(得分:1)
Digest Access Authentication scheme只是一种单向身份验证,其中客户端向服务器验证自身,但不是,反之亦然。只有服务器发出挑战,客户端需要正确响应才能进行身份验证。因此,只有服务器知道客户端是否可信,但客户端不知道服务器是否可信。
现在,链接代码完全相反:客户端向服务器发出质询以对其进行身份验证。所以客户端知道服务器是否真实。
最好的方法是使用mutual authentication。