双重安全认证

2024-05-16 13:39:45 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试对Duo-Security-admin-API进行身份验证,但在身份验证方面遇到了困难。参考号:https://duo.com/docs/adminapi#authentication

它们有一个函数,表示它将用于构造“Authorization”和“Date”头。有人知道怎么开始吗?在

import base64, email, hmac, hashlib, urllib

def sign(method, host, path, params, skey, ikey):
    """
    Return HTTP Basic Authentication ("Authorization" and "Date") headers.
    method, host, path: strings from request
    params: dict of request parameters
    skey: secret key
    ikey: integration key
    """

    # create canonical string
    now = email.Utils.formatdate()
    canon = [now, method.upper(), host.lower(), path]
    args = []
    for key in sorted(params.keys()):
        val = params[key]
        if isinstance(val, unicode):
            val = val.encode("utf-8")
        args.append(
            '%s=%s' % (urllib.quote(key, '~'), urllib.quote(val, '~')))
    canon.append('&'.join(args))
    canon = '\n'.join(canon)

    # sign canonical string
    sig = hmac.new(skey, canon, hashlib.sha1)
    auth = '%s:%s' % (ikey, sig.hexdigest())

    # return headers
    return {'Date': now, 'Authorization': 'Basic %s' % base64.b64encode(auth)}

Tags: pathkey身份验证hostdateargsvalparams