[英]401 unauthorized Azure management api
我正在调用 azure management api 来获取云服务中的实例列表。
以下代码在 fiddler 处于活动状态时有效,并且在未通过 fiddler 时不断返回 401 未经授权。
我无法确定原因。 没有 Fiddler,令牌会正确返回,因此,我不明白为什么我会收到未经授权的令牌。
private HostedService GetCloudServiceProperties(string serviceName)
{
if (_client == null)
{
GetClient();
}
string serviceProperties = string.Format("https://management.core.windows.net/{0}/services/hostedservices/{1}?embed-detail=true", AzureSettings.SubscriptionId, serviceName);
var result = _client.GetStringAsync(serviceProperties).Result;
var serializer = new XmlSerializer(typeof(HostedService), "http://schemas.microsoft.com/windowsazure");
var returnValue = (HostedService)serializer.Deserialize(new StringReader(result));
return returnValue;
}
private void GetClient()
{
string authority = "https://login.microsoftonline.com/" + AzureSettings.TenantName;
IConfidentialClientApplication app;
app = ConfidentialClientApplicationBuilder.Create(AzureSettings.ClientId)
.WithClientSecret(AzureSettings.ClientSecret)
.WithAuthority(new Uri(authority))
.Build();
List<string> scopes = new List<string>()
{
"https://management.core.windows.net/.default"
};
var token = app.AcquireTokenForClient(scopes).ExecuteAsync().Result;
_client = new HttpClient();
_client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.AccessToken}");
_client.DefaultRequestHeaders.Add("x-ms-version", "2009-10-01");
}
简短的回答,但我觉得解决方案是将不记名资本化。 服务通常期望 'Bearer',所以这可能是问题所在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.