Web services 我可以使用哈希密码作为生成hmac的秘密吗?

Web services 我可以使用哈希密码作为生成hmac的秘密吗?,web-services,security,rest,authentication,hmac,Web Services,Security,Rest,Authentication,Hmac,我认为使用用户的密码散列作为生成hmac的秘密会非常舒服。为什么OAuth和其他人使用令牌和nonce 我想到这样的事情: 客户端在ui中输入密码。 应用程序使用存储在服务器上的该密码的哈希值向Web服务注册。 从现在开始,散列不再被传输。 客户端总是可以通过要求用户输入密码并对其进行散列来重新生成密码。每封邮件都用这个散列签名,服务器可以通过用户名或guid查找它,并检查发送的mac是否有效 服务器上的入侵者可以获取该散列,但不知道用户的真实密码,无论如何,他可以使用该散列发送有效的请求。但这

我认为使用用户的密码散列作为生成hmac的秘密会非常舒服。为什么OAuth和其他人使用令牌和nonce

我想到这样的事情:

客户端在ui中输入密码。 应用程序使用存储在服务器上的该密码的哈希值向Web服务注册。 从现在开始,散列不再被传输。 客户端总是可以通过要求用户输入密码并对其进行散列来重新生成密码。每封邮件都用这个散列签名,服务器可以通过用户名或guid查找它,并检查发送的mac是否有效

服务器上的入侵者可以获取该散列,但不知道用户的真实密码,无论如何,他可以使用该散列发送有效的请求。但这不太可能发生,保存的哈希也可以使用nonce再次哈希。无论如何,由于pwd文件将位于客户机的服务器上,因此应使用例如base64对其进行模糊处理,以避免该文件看起来像{“password”:“A4BD146HashHash”}

最重要的是,用户的真实密码永远不会被传输。请求的安全性将使用时间戳/令牌来防止重播(我在这里认识到令牌的用途)

发送散列对我来说非常适用,因为客户端永远不会是一个带有标签的简单网站。例如,webservice将用于基于ajax的应用程序和java桌面应用程序,这两种应用程序都能够散列字符串

怎么了?它非常简单,比任何与身份验证相关的东西都更加RESTFul,我认为它仍然有效。我错过了什么


问候,kruemel

OAuth令牌标识应用程序,而不是授权应用程序代表其行事的用户。nonce是一种防止重播攻击的机制,而不是用于身份验证的机制。基于用户密码的散列提供身份验证与使用明文密码是一样的。我就是不明白。什么是合理的方法?我读了最近几天关于它的文章,但我找不到一个真正优雅、直观和直接的RESTful解决方案…注册应该是:服务器发送nonce,客户端哈希nonce+密码并将其发送到服务器,服务器在检查哈希后存储哈希密码。你确定你真的需要OAuth吗?您是要代表您的用户与OAuth服务交谈,还是只是构建一个API供您的用户与您交谈?那么整个问题是关于什么的?OAuth是以这种方式指定的,因为它解决了允许一方代表第三方与第二方对话的非常具体的任务;这种三方授权是其大部分设计的原因。如果只有两方(用户和服务),则不需要OAuth。OAuth令牌标识应用程序,而不是授权应用程序代表其行事的用户。nonce是一种防止重播攻击的机制,而不是用于身份验证的机制。基于用户密码的散列提供身份验证与使用明文密码是一样的。我就是不明白。什么是合理的方法?我读了最近几天关于它的文章,但我找不到一个真正优雅、直观和直接的RESTful解决方案…注册应该是:服务器发送nonce,客户端哈希nonce+密码并将其发送到服务器,服务器在检查哈希后存储哈希密码。你确定你真的需要OAuth吗?您是要代表您的用户与OAuth服务交谈,还是只是构建一个API供您的用户与您交谈?那么整个问题是关于什么的?OAuth是以这种方式指定的,因为它解决了允许一方代表第三方与第二方对话的非常具体的任务;这种三方授权是其大部分设计的原因。如果只有两方(用户和服务),则不需要OAuth。