Python запрашивает токен для REST API продолжает возвращать 401 не в состоянии определить правильный формат токена - PullRequest
0 голосов
/ 22 сентября 2019

У меня это работает в Powershell, но я пытаюсь понять, как заставить его работать в Python.В Powershell я просто использую

$webclient.Headers.Add("Authorization", "Basic $auth")

с передачей в $ auth моего b64Val моего имени пользователя и пароля, затем получаю строку токена и снова передаю ее в том же формате, используя Authorization и Basic с $ auth, содержащиммоя длинная строка токена.

Тем не менее, я продолжаю возвращать 401 в Python, пытаясь выяснить, как сделать то же самое ... вот мой пример кода Python, первый запрос на получение My_token работает нормально ..

password = 'myPassword'
usrPass = "admin:" + password

b64Val = base64.b64encode(usrPass.encode("ascii")).decode("ascii")
My_token=requests.get("https://10.10.1.2/api/login",headers={"Authorization" : "Basic %s" % b64Val}, verify=False)

token_contents = My_token.content.decode("utf-8").replace('"', '')

#token_test = 'Token ' + token_contents
token_test = 'token ' + token_contents
#token_test = 'TOK:' + token_contents
#token_test = 'Basic ' + token_contents
#token_test = 'token=' + token_contents

header = {'Authorization' : token_test}

url = 'https://10.10.1.2/api/types/instances'
r = requests.get(url, headers=header, verify=False)

см. Мои закомментированные строки. Я попробовал все различные типы настроек токена.

Я думал, что мне нужно было преобразовать токен из байтов в строку и удалить из него двойные кавычки, My_tokenСвойство .content оригинальное значение выглядит так.

b'"YWRtaW46MTU2OTE4NzkwMgg3NzpjZDdlZWEyNmI2NDJmOTY0ZmI5ZGQ3YzBiNnI2ZTNlZQ"'

Просто пытаюсь выяснить, что я неправильно понимаю, взяв объект My_token, который работает нормально и регистрирует меня, но затем возвращает токен на следующемзапрос я пытаюсь выполнить.спасибо

[ОБНОВЛЕНИЕ и ИСПРАВЛЕНИЕ]

благодаря комментариям stovfl я смог узнать больше и увидеть свои ошибки.я переборщил и сделал это более сложным, чем нужно;).Мне просто нужно было поцеловать KISS и просто выполнить базовую аутентификацию с моим содержимым токена. Lol.

r_test = reports.get ('https://10.10.1.2/api/types/instances', auth = ("admin", token_contents), verify = False)

...