Канонический путь для генерации токенов 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)