" v0"的目的是什么? Stripe webhook API中的签名方案?

时间:2018-02-20 19:31:31

标签: stripe-payments

signature verification上的Stripe文档说:

  

目前,唯一有效的签名方案是v1。为了帮助进行测试,Stripe发送了一个带有假v0方案的附加签名,用于测试模式事件。

Stripe-Signature: t=1492774577,
    v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd,
    v0=6ffbb59b2300aae63f272406069a9788598b792a944a07aba816edb039989a39

v0签名以什么方式帮助测试?我可以用它做什么?

如何生成v0签名?它只是一个随机字符串,还是可以验证的HMAC摘要,类似于v1方案?

1 个答案:

答案 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