Рад слышать, что вы больше не сталкиваетесь с этой проблемой :)
Пишу сюда для всеобщего блага...
Если вы видите подобную проблему, это означает, что существует несоответствие заголовка аутентификации между приложением и базой данных. Это может быть результатом многих вещей... включая неправильный ключ аутентификации, рассинхронизацию системных часов или проблему с генерацией заголовка аутентификации.
Собственные SDK DocumentDB
Если вы используете один из сторонних клиентских SDK DocumentDB, скорее всего, это неправильный ключ аутентификации или проблема с системными часами...
Если они выглядят хорошо, то на стороне DocumentDB есть ошибка. Если у вас возникли проблемы, свяжитесь со мной (попросите cosmosdb {at} microsoft.com), предоставив несколько идентификаторов действий + метки времени + трассировку стека, и я помогу вам разобраться в проблеме.
Отдых API
Заголовок довольно сложно собрать... Вот несколько советов по созданию заголовка авторизации:
Все параметры (глаголы, тип ресурса, дата и т. д.) должны быть написаны в нижнем регистре до подписания, ЗА ИСКЛЮЧЕНИЕМ при использовании маршрутизации на основе идентификатора.
Для маршрутизации на основе идентификатора вам потребуется подписать полный путь к ресурсу (например, dbs/MyDatabase/colls/MyCollection/docs/MyDocument
); не только идентификатор ресурса (например, MyDocument
). Обратите внимание, что путь чувствителен к регистру... в то время как все остальные параметры должны быть строчными.
Ключ закодирован в Base64.
Подписываемый текст должен быть в кодировке utf-8.
Сгенерированный токен аутентификации представляет собой SHA256 HMAC и должен быть закодирован в Base64.
Как и все заголовки HTTP, подпись (включая подписанный токен) должна быть закодирована в URL (например, +
необходимо закодировать как %2B
).
Полную документацию и пример кода см. по адресу: https://msdn.microsoft.com/en-US/library/azure/dn783368.aspx
person
Andrew Liu
schedule
05.02.2016