簡體   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