Канонический путь для генерации токенов JWT в python

Правильный способ формирования канонической ссылки для получения токена JWT. Ниже приведен код, который я попробовал. Каждый раз, когда я запускаю код и использую токен со следующим URL 'https://prod-play.zephyr4jiracloud.com/connect/public/rest/api/1.0/teststep/4408?projectId=19500' и заголовок с токеном JWT выдает ошибку Expecting claim 'qsh' to have value '20834alksjf293...' but instead it has the value '38949234lsefkjkl...'"

Я сомневаюсь, что мой канонический URL-адрес мог быть сформирован неправильно, но не смог понять, где может быть ошибка. Я перепробовал все разные комбинации моего QUERY_STRING но ничего не работает.

def get_token():
    USER = 'userid@domain.com'
    ACCESS_KEY = 'myacckey'
    SECRET_KEY = 'myscekey'
    JWT_EXPIRE = 3600
    BASE_URL = 'https://prod-play.zephyr4jiracloud.com'
    RELATIVE_PATH = '/connect/public/rest/api/1.0/teststep/4408'
    QUERY_STRING = 'projectId=19500'
    CANONICAL_PATH = 'GET&' + RELATIVE_PATH + '&' + QUERY_STRING
    payload_token = {
        'sub': USER,
        'qsh': hashlib.sha256(CANONICAL_PATH.encode('utf-8')).hexdigest(),
        'iss': ACCESS_KEY,
        'exp': int(time.time()) + JWT_EXPIRE,
        'iat': int(time.time())
    }

    token = jwt.encode(payload_token, SECRET_KEY, algorithm='HS256').strip().decode('utf-8')

    print('Token', token)
    headers = {
        'Authorization': 'JWT ' + token,
        'Content-Type': 'application/json',
        'zapiAccessKey': ACCESS_KEY
    }
    raw_result = requests.get(url, headers=headers)
    print(raw_result.status_code)
    print(raw_result.content)

0 ответов

Другие вопросы по тегам