我使用 GitHub 作为我的代码存储库。我为一个存储库创建了一个 webhook,所以当任何代码更改被推送到这个存储库时,GitHub 会通知我的应用程序编译代码。在我的应用程序中编译代码之前,我需要验证 GitHub 请求中的 X-Hub-Signature,这是我在 python 中所做的。我发现我用 key 和有效载荷计算的签名总是与 GitHub 提供的签名不匹配。对此有什么想法吗?谢谢!

import hmac
import hashlib
import pickle

def compile_code(request):
    payload = pickle.dumps(request.DATA)
    signature = hmac.new(APP_KEY, payload, hashlib.sha1).hexdigest()
    if signature == request.META.get('X-Hub-Signature'):
        do_compile_code()
    else:
        ...

最佳答案

最后正确的方法是

signature = 'sha1=' + hmac.new(APP_KEY, request.body, hashlib.sha1).hexdigest()
if signature == request.META.get('HTTP_X_HUB_SIGNATURE'):
    do_something()

关于python - 无法在我的应用程序中验证 GitHub X-Hub-Signature,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28228392/

10-13 05:20