gpt4 book ai didi

actions-on-google - 验证 Google Conversation v3 API 的 webhook 请求签名

转载 作者:行者123 更新时间:2023-12-03 23:46:02 24 4
gpt4 key购买 nike

使用新的 Actions SDK or Action Builder 构建 session 操作时,您可以定义一个 webhook 来处理业务逻辑。然后,该 Webhook 接收带有以下 header 的履行请求,其中包括:

Google-Actions-API-Version: "3"
Google-Assistant-Signature: "eyJhbGciOiJSUzI1NiIsImtpZC..."
应该如何验证该签名?这是一个 JWT 声明,但用于签名的 key ID 不存在于与 Action 关联的 GCP 帐户中,并且未在新的 Actions SDK 文档或 Node.js fulfillment library documentation 中提及。 .

最佳答案

签名是 JSON Web Token ,这是一种传输一些已以可验证方式签名的断言的编码方式。有一些库可以解码和验证 JWT。一般步骤(其中一些可以缓存或快捷方式)是:

  • 解码头部得到 kid (key id) 和有效载荷以获取 iss (发行人)字段。您还需要 nbf (不是之前)和 exp (expiration) 字段来验证这是最近设置的,aud字段以验证它是否与您的 GCP 项目 ID 匹配。
  • 根据发行者,访问众所周知的 openid 配置。由于发行人是“https://accounts.google.com”,您可以通过“https://accounts.google.com/.well-known/openid-configuration”访问此信息
  • 从配置文件中,您需要 jwks_uri字段,这是获取当前 JWT 证书的 URL。对于 Google,这可能是“https://www.googleapis.com/oauth2/v3/certs”
  • 证书文档应包含一组 key 。您需要带有 kid 的 key 匹配 kid来自 JWT。请注意,这些键经常更改,但只要您在 nbf 的窗口内即可。和 exp签名头中的字段, key 应该存在于证书文档中。
  • 有了这一切,您就可以验证 JWT 的签名部分。
  • 关于actions-on-google - 验证 Google Conversation v3 API 的 webhook 请求签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62696342/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com