C# 获取O365用户的后台作业获取未经授权的异常
我们正在尝试创建一个微服务模块,其任务是每天使用MicrosoftGraphAPI/users/获取所有用户,并对他们进行处理 我们已遵循此处的指南:并授予Azure应用程序Read.User.All权限: 然后,我们获得了Azure刀片服务器的管理员许可 我们的服务使用Microsoft.Identity.Client库获取令牌:C# 获取O365用户的后台作业获取未经授权的异常,c#,microsoft-graph-api,C#,Microsoft Graph Api,我们正在尝试创建一个微服务模块,其任务是每天使用MicrosoftGraphAPI/users/获取所有用户,并对他们进行处理 我们已遵循此处的指南:并授予Azure应用程序Read.User.All权限: 然后,我们获得了Azure刀片服务器的管理员许可 我们的服务使用Microsoft.Identity.Client库获取令牌: var confidentialClientApplication = new ConfidentialClientApplication(
var confidentialClientApplication = new ConfidentialClientApplication(
this.applicationId,
this.authority,
this.redirectUri,
this.credential,
new TokenCache(),
new TokenCache());
var result = await confidentialClientApplication.AcquireTokenForClientAsync(new[] { "https://graph.microsoft.com/.default" });
return result.AccessToken;
然后,我们创建图形客户端:
new GraphServiceClient(new DelegateAuthenticationProvider(
async requestMessage =>
{
var graphToken = await this.graphAuthProvider.GetAccessTokenAsync();
// Append the access token to the request
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", graphToken);
}));
下面是我得到的令牌的有效载荷,一些信息被忽略了
{
"aud": "https://graph.microsoft.com",
"iss": "https://sts.windows.net/<tenant_id>/",
"iat": 1527833423,
"nbf": 1527833423,
"exp": 1527837323,
"aio": "Y2dgYKgxbYzssLvLWfve6WbgtsdWAA==",
"app_displayname": "<app_name>",
"appid": "<app_id>",
"appidacr": "1",
"e_exp": 262800,
"idp": "https://sts.windows.net/<tenant_id>/",
"oid": "<subject_id>",
"sub": "<subject_id>",
"tid": "<tenant_id>",
"uti": "-XvIySkmuUOuqmQI0l8CAA",
"ver": "1.0"
}
然后尝试获取用户时,我收到一个错误,说应用程序没有访问该资源的权限。发现了问题所在。原来我是在添加委派权限而不是应用程序权限。您能添加一份您回到问题的令牌副本吗?@Marclafler我用令牌的有效负载编辑了这篇文章,我插入了占位符以获取一些信息