【发布时间】:2017-03-04 16:17:28
【问题描述】:
我一直在尝试访问 Azure 公开的 REST API,例如“https://management.azure.com/subscriptions?api-version=2016-06-01”,但无论我多么努力,我总是得到“未经授权”的响应。我为这样的通话获取了一个更重要的令牌:
AuthenticationContext authenticationContext = new AuthenticationContext(string.Format("https://login.windows.net/{0}", azureADTenantId), false);
ClientCredential clientCred = new ClientCredential(azureADAppClientId, azureADAppClientSecret);
AuthenticationResult authResult = authenticationContext.AcquireTokenAsync("https://management.azure.com", clientCred).Result;
return authResult;
这利用了 MS 的 ADAL NuGet 包。我确实得到了一个我这样传递的令牌:
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(authResult.AccessTokenType, authResult.AccessToken);
之后,我使用上述 HttpClient 调用上述 URL,然后是 401 响应。怎么了?仅供参考,我按照以下指南设置用于建立连接的应用程序:https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-create-service-principal-portal
【问题讨论】:
-
请尝试在您的访问令牌前假装“Bearer”。 “Bearer”和访问令牌之间应该有一个空格。
-
@GauravMantri 标头是用新的 AuthenticationHeaderValue 类构建的,是正确的。
-
啊....我不知道。谢谢你让我知道。您可以尝试的另一件事是将“/”附加到“management.azure.com”。如果这没有帮助,那么您阅读 Web 异常的响应文本,您应该会看到有关该错误的更多详细信息。
标签: azure