如何验证BlueSnap IPN安全头?HMAC-SHA256签名验证问询
Bluesnap IPN HMAC-SHA256 签名验证细节
针对你提到的Bluesnap IPN签名验证的几个疑问,整理如下:
- 需要使用的请求头:必须包含
bls-request-id和bls-timestamp这两个请求头,这两个是生成签名输入的核心头部字段。 - 请求头/请求体的解析方式:
- 请求头:直接读取这两个字段的原始字符串值,不要做任何转义、修改(比如去掉首尾空格、转换大小写等);
- 请求体:务必获取原始的未经过处理的字节流,不能将其解析为JSON/XML后再重新序列化,必须保持Bluesnap发送过来的原始格式(包括换行、空格、符号的位置都要完全一致)。
- 输入值的组合规则:按照固定顺序拼接,格式为:
注意每个部分之间用换行符([bls-request-id的值]\n[bls-timestamp的值]\n[原始请求体内容]\n)分隔,请求体内容后不需要额外添加换行。 - 字节转换编码:拼接后的字符串要使用UTF-8编码转换为字节数组,再用你的Bluesnap IPN密钥作为HMAC密钥,执行HMAC-SHA256计算,最后将结果转为Base64字符串,和请求头中的
bls-signature值对比即可完成验证。
内容的提问来源于stack exchange,提问作者Ethan.S
相关产品推荐
相关产品推荐

