使用签名保护REST API

时间:2014-01-28 14:12:08

标签: rest hash passwords signature

我有一些问题需要了解如何保护REST API。 当客户端注册时,密码将被哈希并通过HTTPS发送到服务器。 然后,服务器存储哈希(密码+ privatesalt)。

当客户端使用休息服务时,他使用自己的密码(如here)创建请求和签名HMAC-SHA1。 服务器端,如果密码在数据库中哈希盐水,如何签署请求与客户端签名进行比较?

我知道数据在网络上显示清晰,但我只想对用户进行身份验证。

1 个答案:

答案 0 :(得分:0)

你是对的。如果密码是存储哈希&在服务器端加盐,无法验证在请求中计算的HMAC:MAC需要客户端和服务器之间的共享密钥。

有些解决方案可能是:

  • 使用不是用户密码的专用API密钥。据我所知,这是AWS的选择。密码用于对用户帐户的管理操作(例如,更改计费联系人),API密钥仅由API客户端使用。在这种情况下,如果此API密钥被泄露,则相对容易撤销它并生成一个对安全性影响更小的新密钥。
  • 将HTTPS与X509客户端证书一起使用。这是一个更重量级的解决方案,可能更复杂的设置。但是,它对API用户是透明的,因为身份验证被移动到协议的传输层。