请求正文的HMAC在Node.js

时间:2017-03-11 21:50:27

标签: javascript node.js express hmac

我正在使用node.js构建一些RESTful API。我是node.js的新手。我在2天前开始了。这是我试图做的。

使用邮递员发送以下请求。

POST /register HTTP/1.1
Host: localhost:3000
Content-Type: application/json
Authorization: 415952c44ac7de13f01cdf46bac5e590f29ff12211054e16f71098ca8909652b
Cache-Control: no-cache
Postman-Token: 26087979-05c0-1d75-8822-41809272ef46

{
    "email":"a@abc.com", 
    "name": "abc xyz"
}

Authorization标头的值是为请求主体计算的HMACSHA256。为了测试,我使用http://www.freeformatter.com/hmac-generator.html来计算HMACSHA256,并确保我使用相同的密钥来计算hmac。

在Node.js中我使用相同的请求体来使用以下代码计算HMACSHA256

app.use(bodyParser.json({
    verify: function (req, res, buf, encoding) {
        console.log('json encoding: ', encoding);
        var hmac = crypto.createHmac('sha256', 'a secret');
        hmac.update(buf.toString());
        req.hasha = hmac.digest('hex');
        console.log("hmac: ", req.hasha);

        // get rawBody
        req.rawBody = buf.toString();
        console.log(req.rawBody);

    }
}));

问题是,这给了我错误的HMACSHA256值。在处理缓冲区之前,感觉某些东西正在被修改。我不确定我做错了什么,或者是否有更好的方法。

0 个答案:

没有答案