我正在使用一个相当标准的 Webhook 模式,其中调用的端点由 AWS API Gateway 和后端 Lambda 提供。
Webex Teams webhook 允许您提供一个密钥,该密钥用于使用在“X-Spark-Signature”标头中发送的结果哈希对传出有效负载进行签名。
我创建了一个 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 Gateway 中,我使用此处所述的映射模板将请求标头传递给我的 Lambda:https ://aws.amazon.com/premiumsupport/knowledge-center/custom-headers-api-gateway-lambda/
当请求有效负载到达时,包括正文在内的所有字段都已作为 python 类型的 dict 加载。所以我试图将正文序列化回字符串以检查哈希。
有什么帮助吗?