signature verification上的Stripe文档说:
目前,唯一有效的签名方案是
v1
。为了帮助进行测试,Stripe发送了一个带有假v0
方案的附加签名,用于测试模式事件。Stripe-Signature: t=1492774577, v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd, v0=6ffbb59b2300aae63f272406069a9788598b792a944a07aba816edb039989a39
v0
签名以什么方式帮助测试?我可以用它做什么?
如何生成v0
签名?它只是一个随机字符串,还是可以验证的HMAC摘要,类似于v1
方案?
答案 0 :(得分:0)
如果您要构建自己的客户端来验证Stripe的webhook事件签名,则v0
方案可能会很有用。旨在测试您的客户端是否忽略Stripe-Signature
标头中的未知方案(或将来可能会弃用的方案)。
v0
摘要不使用为您的端点生成的签名秘密; Stripe尚未发布用于创建它的机密,因此您无法对其进行验证。
Stripe自己的client libraries包含一个有关忽略无效方案的测试用例。例如,在Ruby库中:
should "raise a SignatureVerificationError when there are no signatures with the expected scheme" do
header = generate_header(scheme: "v0")
e = assert_raises(Stripe::SignatureVerificationError) do
Stripe::Webhook::Signature.verify_header(EVENT_PAYLOAD, header, "secret")
end
assert_match("No signatures found with expected scheme", e.message)
end