Служба приложений Azure отклонена учетной записью хранения с ошибкой 403

Наш сервер приложений отклонен учетной записью хранения.

Мы сгенерировали правильный токен SAS и можем получить доступ к контейнеру в файле local. (докер, intelliJ, почтальон)

  • WebbApp и учетная запись хранения находятся в одном месте (Германия, Западно-Центральная часть UTC+2).
  • У нас есть стандартная подписка/план
  • Ставим контейнеры в public.
  • Мы устанавливаем IP-адрес для брандмауэра.
  • Мы используем azure sdk java

Мы пытаемся вызвать службу Blob.

Мы получили сообщение об ошибке, когда приложение запускается на серверах Azure.

com.azure.storage.blob.models.BlobStorageException at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance

If you are using a SAS token, and the server returned an error message that says 'Signature did not match', you can compare the string to sign with the one generated by the SDK. To log the string to sign, pass in the context key value pair 'Azure-Storage-Log-String-To-Sign': true to the appropriate generateSas method call.
Please remember to disable 'Azure-Storage-Log-String-To-Sign' before going to production as this string can potentially contain PII.
Status code 403, "<?xml version="1.0" encoding="utf-8"?><Error><Code>AuthorizationFailure</Code><Message>This request is not authorized to perform this operation.
RequestId:959d813f-601e-0057-262f-4351a4000000
Time:2021-05-07T10:53:45.0157340Z</Message></Error>"

Обновление https://i.stack.imgur.com/Hs2Cf.png

ОБНОВЛЕНИЕ

Мы устанавливаем часовой пояс на UTC-0. Это решило нашу проблему. Подача выполняется в часовом поясе UTC-0.


person geri100    schedule 07.05.2021    source источник
comment
Скорее всего, эта ошибка возникает из-за правил брандмауэра. Из-за этого вашему веб-приложению не разрешен доступ к вашей учетной записи хранения.   -  person Gaurav Mantri    schedule 07.05.2021
comment
Я добавил изображение настроек брандмауэра в учетной записи хранения.   -  person geri100    schedule 07.05.2021
comment
О, значит, у вас нет определенных правил брандмауэра. Просто для подтверждения, вы можете получить доступ к той же учетной записи хранения, используя URL-адрес SAS из локальной сети? Можете ли вы поделиться URL-адресом SAS? Просто замаскируйте имя учетной записи, имя контейнера и часть подписи вашего URL-адреса SAS.   -  person Gaurav Mantri    schedule 07.05.2021
comment
?sv=2020-02-10&ss=bfqt&srt=sco&sp=rwdlacupx&se=2026-05-07T18:36:25Z&st=2021-05-07T08:35:25Z&sip=0.0.0.0-255.255.255.255&spr=https,http&sig=** ********   -  person geri100    schedule 07.05.2021
comment
Да, мы достигли контейнеров с URL-адресом SAS с помощью postman и chrome, но когда мы развернули службу в Azure, мы получили исключения. @GauravMantri   -  person geri100    schedule 07.05.2021
comment
Ваш токен SAS выглядит нормально. Можете ли вы ответить на другие мои вопросы.   -  person Gaurav Mantri    schedule 07.05.2021
comment
Да, мы можем получить доступ к тому же хранилищу из локального. @GauravMantri   -  person geri100    schedule 07.05.2021
comment
Давайте продолжим обсуждение в чате.   -  person geri100    schedule 07.05.2021
comment
Могу ли я узнать, как ваша служба приложений получает этот токен SAS?   -  person Stanley Gong    schedule 10.05.2021
comment
К сожалению, я не воспроизвел вашу ошибку. Вы можете взглянуть на это: github.com/Azure/azure- SDK-для-java/issues/20193   -  person Doris Lv    schedule 12.05.2021


Ответы (2)


Есть две вещи, которые вы должны проверить:

  1. Как получить этот токен SAS.
  2. Использовали ли вы разные контейнеры между локальным и удаленным.

Как вы сказали, вы можете успешно использовать его локально, затем вы можете попробовать отладить свой код, чтобы получить значение sas uri и получить к нему доступ напрямую через браузер.

Наконец, если это не поможет, вы можете попробовать создайте токен SAS на портале и жестко закодируйте токен sas в свой код.

person Doris Lv    schedule 13.05.2021
comment
Генерируем токен SAS на сайте Azure. - person geri100; 14.05.2021

Мы устанавливаем часовой пояс на UTC-0. Это решило нашу проблему. Подача выполняется в часовом поясе UTC-0.

person geri100    schedule 14.05.2021