Помогите разобраться с авторизацией на python api

https://support.huawei.com/view/contentview/getFileStream?mid=SUPE_DOC&viewNid=EDOC1000126989&nid=EDOC1000126989&partNo=j005&type=htm#ainterface-for-access-authentication вот тут как авторизоваться на СХД, это все проходит, json возвращает значения.

Имеем код:

import http
import requests
import json
import ssl
import time
import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

data = {
    "username": "storage",
    "password": "!123",
    "scope": "1"
  }

url = 'https://192.168.10.10:8088/deviceManager/rest/xxxxx/sessions'

r = requests.post(url, data=json.dumps(data), verify=False)
token = json.loads(r.text)['data']['iBaseToken']
headers = { 'iBaseToken:' + token }
re = requests.get('https://192.168.10.10:8088/deviceManager/rest/2102350BVD10HA000036/performace_statistic/cur_statistic_data?CMO_STATISTIC_UUID=207:0A&CMO_STATISTIC_DATA_ID_LIST=26&timeConversion=0',  verify=False)
j = json.loads(re.text)
print j

Ну и соответственно получаю ошибку что не авторизован, postman если делаю запрос после авторизации то в cookie вижу сессию , как мне тут включать этот запрос в эту сессию


Ответы (2 шт):

Автор решения: Sergey Glukhov

Сильно не углублялся в суть вопроса, но мне кажется в Вашем запросе

re = requests.get('https://192.168.10.10:8088/deviceManager/rest/2102350BVD10HA000036/performace_statistic/cur_statistic_data?CMO_STATISTIC_UUID=207:0A&CMO_STATISTIC_DATA_ID_LIST=26&timeConversion=0',  verify=False)

не хватает headers, который Вы определили строчкой выше.

headers = { 'iBaseToken:' + token }

re = requests.get('https://192.168.10.10:8088/deviceManager/rest/2102350BVD10HA000036/performace_statistic/cur_statistic_data?CMO_STATISTIC_UUID=207:0A&CMO_STATISTIC_DATA_ID_LIST=26&timeConversion=0', headers={'iBaseToken: ' + token}  verify=False)
→ Ссылка
Автор решения: Roman Konoval

Чтобы cookie, который вернул предыдущий запрос, использовался в следующих запросах используйте механизм сессий в requests.

Вместо requests.post делайте:

s = requests.Session()

# если здесь сервер возвращает cookie
s.post(...) 

# то здесь cookie будет автоматически использовано
# при условии, что запрос на тот же домен (или поддомен в зависимости от настроек куки)
s.get(...) 

Если же передача нужна таки через header, то правильно так:

headers = {'iBaseToken': token }
→ Ссылка