Как правильно получить заголовок авторизации при использовании get blob из службы хранилища azure?

Я использовал носитель авторизации в своем заголовке для службы хранения, используя ресурс https://storage.azure.com.

Вот как я делаю свой заголовок.

$Body2 = @{
    resource = "https://storage.azure.com/"
    client_id = $clientid
    grant_type = "client_credentials"
    client_secret = $password
}
$token2=Invoke-RestMethod -Uri "https://login.windows.net/$TenantId/oauth2/token" -Method 'POST' -Body $Body2 -Headers @{"accept"="application/json"} -UseBasicParsing

Приведенная выше команда дает мне токен доступа, который я помещаю в свой заголовок, как показано ниже.

Name                          Value                                                                                    
----                           -----                                                                                    
Authorization                  Bearer xxxxxxxxxxxxxxxxxxxxxxxxx
x-ms-version                   2017-11-09                                                                               
x-ms-date                      Fri, 10 Aug 2018 13:27:34 GMT  

И я использовал эту команду,

Invoke-RestMethod -Uri "https://myaccount.blob.core.windows.net/mycontainer/myfile.txt" -Method 'GET' -Header $Header -UseBasicParsing

Проблема в том, что возникает ошибка Invoke-RestMethod : AuthorizationFailureThis request is not authorized to perform this operation., что довольно странно, потому что мы уже даем разрешение субъекту службы на загрузку из хранилища BLOB-объектов.

Неправильно ли мой заголовок использует Bearer? Что не так с его использованием и как решить эту проблему?

Вы должны опубликовать весь свой код PowerShell. Что на самом деле находится в заголовке $?

Nick.McDermaid 10.08.2018 17:00

Что было бы более уместно, так это опубликовать, как вы получили токен на предъявителя. Я также предлагаю добавить -Verbose к вашему вызову irm, так как вы получите гигантский дамп полезной информации.

No Refunds No Returns 10.08.2018 17:20

@ Nick.McDermaid уже обновил мой вопрос, пожалуйста, посмотрите.

asiandudeCom 14.08.2018 04:36

@NoRefundsNoReturns Спасибо за ваше предложение. Я попробую.

asiandudeCom 14.08.2018 04:37

Почему ваш Uri - https://myaccount.blob.com/mycontainer/myfile.txt. Похоже, что это не uri хранилища BLOB-объектов, как https://myaccount.blob.core.windows.net/mycontainer/myfile.t‌​xt.

Joey Cai 14.08.2018 08:31

Ах да, это тот URI. Я думаю, что неправильно написала в своем вопросе. На самом деле я использовал эту ссылку, и она все еще отвергает меня @JoeyCai

asiandudeCom 14.08.2018 09:03
1
6
703
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Is my header using Bearer is the wrong way?

Поскольку у меня есть тест, заголовок с токеном, который вы генерируете, правильный.

What's wrong with using it and how to fix this issue?

Согласно сообщению об ошибке, которое вы предоставили, похоже, что ошибка 403 forbidden. И у вас есть разрешение приложению для загрузки большого двоичного объекта, тогда вам нужно добавить приложение, зарегистрированное в вашей учетной записи хранения, чтобы предоставить разрешение. Вы можете обратиться к следующим шагам, чтобы добиться этого.

1. Предоставьте разрешение приложению, зарегистрированному в Azure AD. enter image description here 2. В учетной записи хранения щелкните Access control(IAM) и добавьте разрешение для приложения. enter image description here 3.Рабочий выход. enter image description here

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

asiandudeCom 16.08.2018 06:01

Другие вопросы по теме