2014-01-28 88 views
0

我在理解如何保护REST API方面存在一些问题。 当客户注册时,密码被散列并通过HTTPS发送到服务器。 然后,服务器存储哈希(密码+ privatesalt)。使用签名保护REST API

当客户端使用休息服务时,他使用自己的密码创建了请求和签名HMAC-SHA1(如here)。 服务器端,如何在数据库中对密码进行散列腌制时如何签名与客户端签名进行比较的请求?

我知道数据在网上显示清楚,但我只想验证用户。

回答

0

你说得对。如果密码被存储在服务器端的盐渍散列&中,则无法验证在请求上计算的HMAC:MAC需要客户端和服务器之间的共享密钥。

有些解决方案可能是:

  • 使用这不是用户密码的专用API密钥。据我所知,这是AWS的选择。该密码用于对用户帐户进行管理操作(例如更改结算联系人),并且API密钥仅由API客户端使用。在这种情况下,如果此API密钥遭到破坏,撤销它并生成一个对安全性影响更有限的新密钥相对容易。
  • 使用带有X509客户端证书的HTTPS。这是一个更重量级的解决方案,可能更复杂。但是,由于身份验证已移至协议的传输层,因此API用户透明。