我正在遵循有关安装 Azure Arc Server 代理的 Microsoft 教程,https://learn.microsoft.com/en-us/azure/azure-arc/servers/managed-identity-authentication,安装进行得很顺利,我现在测试获取令牌。使用上面文章提供的代码(我以管理员身份使用 Visual Studio 运行它)。
$apiVersion = "2020-06-01"
$resource = "https://management.azure.com/"
$endpoint = "{0}?resource={1}&api-version={2}" -f $env:IDENTITY_ENDPOINT,$resource,$apiVersion
$secretFile = ""
try
{
Invoke-WebRequest -Method GET -Uri $endpoint -Headers @{Metadata='True'} -UseBasicParsing
}
catch
{
$wwwAuthHeader = $_.Exception.Response.Headers["WWW-Authenticate"]
if ($wwwAuthHeader -match "Basic realm=.+")
{
$secretFile = ($wwwAuthHeader -split "Basic realm=")[1]
}
}
Write-Host "Secret file path: " $secretFile`n
$secret = cat -Raw $secretFile
$response = Invoke-WebRequest -Method GET -Uri $endpoint -Headers @{Metadata='True'; Authorization="Basic $secret"} -UseBasicParsing
if ($response)
{
$token = (ConvertFrom-Json -InputObject $response.Content).access_token
Write-Host "Access token: " $token
}
但是我收到错误:
{"error":"unauthorized_client","error_description":"缺少基本授权标头","error_codes":[401],"timestamp":"2023-07-05 10:32:31.7391949 +0200 CEST m=+ 5321.276017201","trace_id":"","correlation_id":"0ec3a4b9-292b-4283-aaee-d76fc1339976"}
我查看了hims日志“C:\ProgramData\AzureConnectedMachineAgent\Log\himds.log” 没有更多信息,我得到了同样的错误,一行写着:
time =“2023-07-05T11:44:59 + 02:00”level = info msg =“缺少基本授权标头”reason = unauthorized_client uuid = a022087f-7bd9-43dd-b88b-9c8f4e1ab168
我尝试使用 Postman,同样的错误。
知道出了什么问题吗?
文森特
我尝试使用邮递员,但遇到了完全相同的问题。
您可能正在使用 PowerShell 7 并且 catch 块中的
$_
为空。您可以修改第一次获取以使用 Invoke-RestMethod
以及选项 [-ResponseHeadersVariable <String>]
和 -SkipHttpErrorCheck
来获取响应标头对象并从对象中解析文件名。