Согласно документации по 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
Как создать хешированную подпись токена для REST API Azure Cosmos DB, чтобы составить список пользователей? ⇐ Python
Программы на Python
1735926366
Anonymous
Согласно документации по REST API Cosmos DB, при каждом вызове API должен быть установлен заголовок авторизации. Значение для этого создается, как описано здесь: https://learn.microsoft.com/en-us/rest/api/cosmos-db/access-control-on-cosmosdb-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/api/cosmos-db/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"
}
Подробнее здесь: [url]https://stackoverflow.com/questions/64760922/how-to-construct-the-hashed-token-signature-for-azure-cosmos-db-rest-api-to-list[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия