我认为使用用户的密码哈希作为生成hmac的秘密会非常舒服。为什么OAuth和其他人使用令牌和nonces?
我想到这样的事情:
客户在ui中输入密码。 应用程序使用该密码的哈希值向webservice注册,该密码存储在服务器上。 现在表单上的哈希值不再被传输。 客户端总是可以通过要求用户输入密码并对其进行散列来重新生成密钥。每条消息都使用此哈希签名,服务器可以通过用户名或guid查找,并检查发送的mac是否有效。
服务器上的入侵者可以获取该哈希值,但不知道用户的真实密码,无论如何,他可以使用该哈希发送有效请求。但这不太可能发生,保存的哈希也可以使用随机数再次进行哈希处理。无论如何,因为pwd文件将在客户端的服务器上,所以应该使用例如pwd文件对其进行模糊处理。 base64以避免文件看起来像{“密码”:“a4bd146hashhashhash”}。
大多数用户的真实密码都不会被传输。请求将使用时间戳/令牌进行保护以防止重放(我在此处识别令牌的目的)。
发送哈希对我来说非常适用,因为客户端永远不会是一个带有标签的简单网站,例如.net服务将用于基于ajax的应用程序和java桌面应用程序,它们都能够散列字符串...
这有什么问题?它比任何与身份验证相关的东西都简单,更加RESTFul,而且我认为还有效。我错过了什么?
Greets,kruemel