Безопасная передача учетных данных для аутентификации API - Python 3 - PullRequest
0 голосов
/ 25 сентября 2018

В Python 3 я передаю учетные данные для аутентификации вызова API, и он работает совершенно нормально, используя следующую строку:

userAndPass = b64encode(b"username:password").decode("ascii")

В целях безопасности я бы предпочел сохранить учетные данныевнешне (возможно, в файле yaml или где-то еще), а не в жестком коде.Я попытался заменить имя пользователя и передать переменные, но это не сработало.Я попытался поместить переменную «учетные данные» в скобках, а также попытался добавить плюс перед рукой, ни одна из них не работает.

Я бы хотел, чтобы он работал следующим образом:

credentials = "username:password"
userAndPass = b64encode(b'credentails').decode("ascii")

Любое предложение приветствуется!

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

В данном конкретном случае вы передаете переменную неправильно.

b64encode(b'credentails') означает, что кодирует массив байтов [c, r, e, d, e, n, t, i, a, l, s] .

Используйте это так:

credentials = b"username:password" userAndPass = b64encode(credentails).decode("ascii")

РЕДАКТИРОВАТЬ:

Если вы хотитеполучить учетные данные по-разному:

credentials = somehow_get_credentials_as_string() bytes_credentials = credentials.encode('utf-8') # or whatever the encoding is userAndPass = b64encode(bytes_credentials).decode("ascii")

0 голосов
/ 25 сентября 2018

requests позволяет передавать кортеж auth, например:

username = 'Antonio'
password = 'xx1234xx'
user_pass = (username, password)

res = requests.get('https://www.example.com/fetch', auth=user_pass)
...