我在Azure AD中注册了一个Native应用程序,并获得了访问图API的所有代理权限。我正在尝试使用控制台解决方案(exe)测试此解决方案,其中包含使用客户端ID和密码的以下代码
private static async void AcquireTokenAsync() {
AuthenticationContext context = new AuthenticationContext("https://login.windows.net/xxxxxx-xxxx-485b-a40f-xxxxxxxx/oauth2/token", true);
var result = await context.AcquireTokenAsync("https://graph.microsoft.com",
new ClientCredential("xxxxxx-32cf-xxxx-8888-555555555555",
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxV89cWfH0w="
)
);
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + result.AccessToken);
HttpResponseMessage response = await client.GetAsync("https://graph.microsoft.com/v1.0/users/");
string retResp = await response.Content.ReadAsStringAsync();
string token = result.AccessToken;
Console.WriteLine(token + "\n" + restResp);
}
检索令牌没有问题。我得到了accessstoken,但是在带有令牌的图api调用中有以下错误/响应
{
"error": {
"code": "Authorization_RequestDenied",
"message": "Insufficient privileges to complete the operation.",
"innerError": {
"request-id": "cb7aaaa9-d9a0-485a-7777-b5bfe68ba771",
"date": "2017-07-22T11:01:49"
}
}
}
请说明出了什么问题
答案 0 :(得分:1)
请查看委派权限和仅限应用权限here之间的差异。
您遇到的问题是您已向Graph API请求委派权限,但之后您正在获取仅应用程序令牌,这需要不同类型的权限。如果您take a look at your token,您会发现您的令牌缺少调用图表所需的声明。
相反,您需要执行以下操作之一: