禁止向Azure服务管理(REST)传递访问令牌

本文关键字:访问令牌 REST Azure 服务 管理 禁止 | 更新日期: 2023-09-27 18:14:35

我正在尝试列出一个资源组中的所有虚拟机,根据这个API

我已经将应用程序添加到我的AAD租户,并将其授权给Windows Azure服务管理应用程序。

这是我的代码…

private static HttpClient httpClient = new HttpClient();
private static AuthenticationResult result;
static void Main(string[] args)
{
    AuthenticationContext ac = new AuthenticationContext("https://login.windows.net/<id>.onmicrosoft.com");
    ClientCredential cc = new ClientCredential(clientId, clientSecret);
    result = ac.AcquireToken("https://management.azure.com/", cc);
    getresponse().Wait();

}
static async Task getresponse()
{
    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
    HttpResponseMessage response = await httpClient.GetAsync("https://management.azure.com/subscriptions/<subscriptionID>/resourceGroups/resourcegroupname/providers/Microsoft.Compute/virtualmachines?api-version=2015-05-01-preview");

}

(<>部分改为此处)

在最后一行,我得到一个403禁止响应

任何想法? !

禁止向Azure服务管理(REST)传递访问令牌

你得到这个错误的原因是因为你试图使用Azure资源管理器(ARM) API使用令牌获得你的应用程序,但应用程序没有访问权限来管理你的订阅。您需要做的是为此订阅中的应用程序分配适当的角色。

请看看我在这里对问题的回答:创建流分析作业时授权失败,我描述了两种方法,可以将角色分配给应用程序。