Base64 Authentication Python

前端 未结 4 656
滥情空心
滥情空心 2021-02-01 15:03

I\'m following an api and I need to use a Base64 authentication of my User Id and password.

\'User ID and Password need to both be concatenated and then Base64 encoded\'

相关标签:
4条回答
  • 2021-02-01 15:07

    The requests library has Basic Auth support and will encode it for you automatically. You can test it out by running the following in a python repl

    from requests.auth import HTTPBasicAuth
    r = requests.post(api_URL, auth=HTTPBasicAuth('user', 'pass'), data=payload)
    

    You can confirm this encoding by typing the following.

    r.request.headers['Authorization']
    

    outputs:

    u'Basic c2RhZG1pbmlzdHJhdG9yOiFTRG0wMDY4'
    
    0 讨论(0)
  • 2021-02-01 15:16

    With python3, I have found a solution which is working for me:

    import base64
    userpass = username + ':' + password
    encoded_u = base64.b64encode(userpass.encode()).decode()
    headers = {"Authorization" : "Basic %s" % encoded_u}
    
    0 讨论(0)
  • 2021-02-01 15:21

    As explained in the Requests documentation https://2.python-requests.org/en/latest/user/authentication/

    Making requests with HTTP Basic Auth is very simple:

    >>> from requests.auth import HTTPBasicAuth
    >>> requests.get('https://api.github.com/user', auth=HTTPBasicAuth('user', 'pass'))
    <Response [200]>
    

    In fact, HTTP Basic Auth is so common that Requests provides a handy shorthand for using it:

    >>> requests.get('https://api.github.com/user', auth=('user', 'pass'))
    <Response [200]>
    

    Providing the credentials in a tuple like this is exactly the same as the HTTPBasicAuth example above.

    0 讨论(0)
  • 2021-02-01 15:23

    You can encode the data and make the request by doing the following:

    import requests, base64
    
    usrPass = "userid:password"
    b64Val = base64.b64encode(usrPass)
    r=requests.post(api_URL, 
                    headers={"Authorization": "Basic %s" % b64Val},
                    data=payload)
    

    I'm not sure if you've to add the "BASIC" word in the Authorization field or not. If you provide the API link, It'd be more clear.

    0 讨论(0)
提交回复
热议问题