Как создать хешированную подпись токена для REST API Azure Cosmos DB, чтобы составить список пользователей?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как создать хешированную подпись токена для REST API Azure Cosmos DB, чтобы составить список пользователей?

Сообщение Anonymous »

Согласно документации по REST API Cosmos DB, при каждом вызове API должен быть установлен заголовок авторизации. Значение для этого создается, как описано здесь: https://learn.microsoft.com/en-us/rest/ ... -resources
Я реализую это на Python следующим образом:
def get_authorisation_token(verb, resource_type, resource_id, date, master_key):
key = base64.b64decode(master_key)

text = f"""{verb.lower()}\n{resource_type.lower()}\n{resource_id.lower()}\n{date.lower()}\n\n"""

text_encoded = text.encode('utf-8')

signature_hash = hmac.new(key, text_encoded, digestmod=hashlib.sha256).digest()
signature = base64.b64encode(signature_hash).decode()

key_type = 'master'
version = '1.0'

uri = f'type={key_type}&ver={version}&sig={signature}'
uri_encoded = urllib.parse.quote(uri)

return uri_encoded

Поскольку он отправляется при каждом вызове, токен аутентификации необходимо создать заново, чтобы он соответствовал URL-адресу запроса. Так, например, чтобы получить список баз данных, необходимо указать тип ресурса: dbs, а ссылку/идентификатор ресурса - пустую строку с URL-адресом: https://{databaseaccount}.documents.azure. .com/dbs/
Часть, которую я не могу понять, — это правильная комбинация типа ресурса и идентификатора ресурса/ссылки для получения всех пользователей из определенной базы данных. Документацию можно найти здесь: https://learn.microsoft.com/en-us/rest/ ... list-users
Я пробовал несколько комбинаций, но ничего не возвращается. пользователи, я просто получаю 401:
{
"code": "Unauthorized",
"message": "The input authorization token can't serve the request. Please check that the expected payload is built as per the protocol, and check the key being used. Server used the following payload to sign: 'get\nusers\ndbs/\nmon, 09 nov 2020 23:37:24 gmt\n\n'\r\nActivityId: 697a4159-f160-4aab-ae90-6cb5eaadb710, Microsoft.Azure.Documents.Common/2.11.0"
}


Подробнее здесь: https://stackoverflow.com/questions/647 ... pi-to-list
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»