使用签名保护RESTAPI

使用签名保护RESTAPI,rest,hash,passwords,signature,Rest,Hash,Passwords,Signature,我有一些问题需要理解如何保护RESTAPI。 当客户端注册时,密码将被散列并通过HTTPS发送到服务器。 然后,服务器存储哈希(密码+私有盐) 当客户机使用rest服务时,他使用自己的密码(如)创建请求和签名HMAC-SHA1。 服务器端,如果数据库中的密码是散列的,如何对请求进行签名以与客户端签名进行比较 我知道数据在网络上以明文形式显示,但我只想验证用户身份。你说得对。如果密码以散列方式存储在服务器端,则无法验证根据请求计算的HMAC:MAC需要客户端和服务器之间的共享密钥 一些解决办法可以

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

当客户机使用rest服务时,他使用自己的密码(如)创建请求和签名HMAC-SHA1。 服务器端,如果数据库中的密码是散列的,如何对请求进行签名以与客户端签名进行比较


我知道数据在网络上以明文形式显示,但我只想验证用户身份。

你说得对。如果密码以散列方式存储在服务器端,则无法验证根据请求计算的HMAC:MAC需要客户端和服务器之间的共享密钥

一些解决办法可以是:

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