Base64 Authentication Python

Я следую api, и мне нужно использовать аутентификацию Base64 моего идентификатора пользователя и пароля.

'Идентификатор пользователя и пароль должны быть объединены, а затем закодированы Base64

затем показывает пример

'userid:password'

Затем он продолжает говорить: "Предоставьте закодированное значение в" заголовке авторизации "

', например: Авторизация: BASIC {Base64-encoded value}'

Как записать это в запрос api python?

z = requests.post(url, data=zdata )

Спасибо

Ответ 1

Вы можете закодировать данные и сделать запрос, выполнив следующие действия:

import requests, base64

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

Я не уверен, что вы должны добавить слово "BASIC" в поле "Авторизация" или нет. Если вы предоставите ссылку API, было бы более понятно.

Ответ 2

В библиотеке запросов есть Basic Auth support и будет автоматически кодироваться для вас. Вы можете проверить это, выполнив следующее в python repl

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

Вы можете подтвердить эту кодировку, введя следующее.

r.request.headers['Authorization']

выходы:

u'Basic c2RhZG1pbmlzdHJhdG9yOiFTRG0wMDY4'

Ответ 3

С python3 я нашел решение, которое работает для меня:

userpass = username + ":" + password
endcoded_u = base64.b64encode(userpass.encode()).decode()
headers = {"Authorization" : "Basic %s" % encoded_u}