【发布时间】:2018-12-09 19:58:40
【问题描述】:
我正在 Shopify 网站和我的应用程序之间进行一些 URL 验证。在 Shopify 的 .liquid 文件中,我正在使用 Shopify 内置的 hmac_sha256 字符串过滤器创建 HMAC 值。我正在使用存储在客户标签中的密钥和 Twitch 用户 ID。
哈希值作为查询参数传递给我的应用程序,它使用 node.js 中的加密模块生成哈希值并将其与来自 url 的哈希值进行比较。
这里有点奇怪:在 .liquid 文件中,当我直接在字符串过滤器中输入 Twitch ID 时,.liquid 文件生成的哈希值与我的应用生成的值相同,一切看起来都很好:
{{ "12345678" | hmac_sha256: "secret_key" }}
但是,当我将相同的 Twitch ID 作为 变量 传递到字符串过滤器时,液体文件生成的哈希值与第一次不同:
{{ twitchId | hmac_sha256: "secret_key" }}
我已经尝试从 Twitch ID 变量中删除空格和换行符,以防万一。我什至不知道问题可能是什么。也许变量(它是一个字符串)的编码方式与我直接输入时不同?
供参考,检查匹配哈希的javascript代码:
// Get query string params:
const { hash, twitchId } = req.query;
console.log('Twitch ID in query: ' + twitchId);
// Verify user
const generatedUserHash = crypto
.createHmac('sha256', userVerifySecret)
.update(twitchId)
.digest('hex');
console.log('Passed hash: ' + hash + ' Generated hash: ' + generatedUserHash);
if (generatedUserHash == hash) {
return true;
} else {
return false;
}
【问题讨论】:
-
您需要展示如何将 ID 分配给变量。如果没有看到,就无法验证您的问题。
标签: node.js shopify liquid sha256 hmac