[英]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.