繁体   English   中英

Webex Teams Webhook 与 API 网关和 Lambda

[英]Webex Teams Webhook with API Gateway and Lambda

我正在使用一个相当标准的 Webhook 模式,调用的端点由 AWS API 网关和后端 Lambda 提供。

Webex Teams webhook 允许您提供用于签署传出有效负载的密钥,其中生成的 hash 在“X-Spark-Signature”header 中发送。

我创建了一个 webhook 并在我的 Lambda 中接收事件有效负载,但哈希值不匹配。 下面是我的示例代码:

def validate(key, raw):
    hashed = hmac.new(key, raw, hashlib.sha1)
    print(hashed.hexdigest())
    return hashed.hexdigest()

key = bytes('somecazYs3Cret', 'UTF-8')
raw = bytes(event['body'], 'UTF-8')
signature = event['headers']['X-Spark-Signature']

if validate(key, raw) == signature:
    print('AUTHORIZED')
else:
    print('REJECTED')

在 API 网关中,我使用此处所述的映射模板将请求标头传递到我的 Lambda: https://aws.amazon.com/premiumcustomsupport-gatewaynowledge-lambda.com/premiumcustomsupport-gate/

当请求有效负载到达时,包括正文在内的所有字段都已作为 python 类型的字典加载。 所以我试图将正文序列化回字符串以检查 hash。

有什么帮助吗?

事实证明,这是 API 网关将请求有效负载传递到 Lambda 的方式。 而不是“映射模板”,我必须启用“使用 Lambda 代理集成”功能,它将原始主体 JSON 作为字符串传递。

启用此功能并删除我的代码的json.dumps()部分后,哈希验证正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM