【问题标题】:Verifying incoming requests on Python3 by HMAC-SHA1通过 HMAC-SHA1 验证 Python3 上的传入请求
【发布时间】:2020-11-04 07:45:09
【问题描述】:

我需要使用 HMAC-SHA1 验证传入请求。对我来说主要问题是为它创建基本字符串。是否有任何 python 库可以从请求中生成 base string 并在可能的情况下进行验证?

【问题讨论】:

    标签: python python-3.x oauth hmac


    【解决方案1】:

    据我了解,您不是在询问 OAuth 1.0 请求,而是在询问签名和验证功能,对吧?

    如果这是你要问的,我不确定是否有任何库,但在Authlib 的代码中,有一个模块可以进行签名和验证签名:https://github.com/lepture/authlib/blob/master/authlib/oauth1/rfc5849/signature.py

    结帐:

    1. sign_hmac_sha1 https://github.com/lepture/authlib/blob/master/authlib/oauth1/rfc5849/signature.py#L350
    def sign_hmac_sha1(client, request):
        """Sign a HMAC-SHA1 signature."""
        base_string = generate_signature_base_string(request)
        return hmac_sha1_signature(
            base_string, client.client_secret, client.token_secret)
    
    1. verify_hmac_sha1 https://github.com/lepture/authlib/blob/master/authlib/oauth1/rfc5849/signature.py#L368
    def verify_hmac_sha1(request):
        """Verify a HMAC-SHA1 signature."""
        base_string = generate_signature_base_string(request)
        sig = hmac_sha1_signature(
            base_string, request.client_secret, request.token_secret)
        return hmac.compare_digest(sig, request.signature)
    

    您可以从 Authlib 代码中学习。但是如果你只是想发送 OAuth 1.0 请求,你可以直接使用 Authlib。文档在这里:https://docs.authlib.org/en/latest/client/oauth1.html

    【讨论】:

    • 非常感谢@lepture!看来,这就是我要找的。你知道如何将服务器安装到 Django,因为我在尝试使用 signature.py 时出错。 'Request' object has no attribute 'uri,再次感谢您!
    • 那个请求是由Authlib创建的,你可以在github.com/lepture/authlib/blob/master/authlib/oauth1/rfc5849/…找到它
    • 你能否在你的答案中展示如何安装这个库和调用这个函数的例子。或者我可以根据需要创建新主题
    • 我创建了新主题,如果您能帮助我,将不胜感激stackoverflow.com/questions/63043331/…
    猜你喜欢
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 2018-12-30
    • 1970-01-01
    • 2016-06-24
    • 2020-11-04
    相关资源
    最近更新 更多