我通过使用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的标题是错误的方法吗?使用它有什么问题以及如何解决此问题?