通过HMAC进行Fastify REST API和Polymer Frontend的身份验证

时间:2018-12-18 22:14:46

标签: javascript node.js rest api hmac

我正在使用类似于Polymer Blog的应用程序中的Fastify Rest API,并且只使用身份验证部分。因为它是一个有趣的项目,所以我想尝试HMAC身份验证,但是我不知道如何在前端进行设置,这样我就不会在客户端存储用户密码。 我就是这样想如何实现hmac的:

1。客户端从HTML表单获取用户名和密码,并使用用户密码作为秘密来构建HMAC:

  const hmac = crypto.createHmac('sha256', user.password)
  hmac.update(querypath) //adds the path name as message
  hmac.digest('hex')

2。客户端将hmac放在Authorization标头中,并将其与用户名一起以纯文本格式发送到API:

  Authorization: username:[digest]

3。服务器自行计算哈希(查找用户,获取密码等)并将其与从客户端/请求中获得的哈希进行比较

if(hmacFromRequest === hmacCalculatedFromServer){
   //authenticated
}else{
//not authenticated
//throw new Error or reply to client
}

我的问题基本上是现在我该如何发回给客户?客户端是否需要将密码保存在某个地方以计算hmac?我是否应该将hmac放入localStorage并在每次发出请求时将其获取?

0 个答案:

没有答案
相关问题