AWS Lambda验证来自Slack的请求

问题描述 投票:1回答:1

我在AWS Lambda中具有以下Python代码,以验证是否确实从Slack接收到事件:

   import hmac
   import json
   def verifySignature(header,body):
        h = hmac.new(key=os.getenv('sign_secret').encode(), \
            msg=f'v0:{header.get("X-Slack-Request-Timestamp")}:{body}'.encode(), \
            digestmod="sha256")
        result = hmac.compare_digest('v0='+h.hexdigest(),header.get('X-Slack-Signature'))
        print('v0='+h.hexdigest(),header.get('X-Slack-Signature'))
        return result

    def lambda_handler(event, context):
        body = json.loads(event.get('body'))
        if verifySignature(event.get('headers'),body):
            do_something()

Slack的认证协议概述为here。但是,我不断收到不匹配的签名(结果== False)。有人知道为什么吗?

json python-3.x amazon-web-services aws-lambda slack-api
1个回答
0
投票

问题很有可能来自编码/解码。有pip package可以验证松弛签名。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.