调用Microsoft Graph获取用户信息时遇AADSTS900561错误求助
解决AADSTS900561错误的方法
首先看代码里的直接错误:你创建了graphClient用于请求Graph API,但最后调用的是client.Execute(grRequest),这里的client是之前请求令牌的RestClient实例,指向的是tokenEndpoint,而非Graph API地址,这会导致请求发送到错误的地址,必然触发错误。
修正这个问题:
// 把这行 var grResponse = client.Execute(grRequest); // 改成 var grResponse = graphClient.Execute(grRequest);
除此之外,还有几个需要检查的点:
- 权限范围问题:你当前用的scope是
https://graph.microsoft.com/.default,这个范围适用于无用户参与的客户端凭证流,而桌面应用的授权码流应该使用具体的用户权限,比如User.Read,修改scope参数:
request.AddParameter("scope", "User.Read", ParameterType.GetOrPost);
同时要确保你在Azure AD应用注册中已经添加了User.Read权限,并且完成了管理员同意或用户同意操作。
重定向URI配置:桌面应用的重定向URI建议使用微软官方推荐的
https://login.microsoftonline.com/common/oauth2/nativeclient,且该URI必须已添加到Azure AD应用注册的「移动和桌面应用」平台配置中。验证令牌有效性:可以解码access_token,检查
aud字段是否为https://graph.microsoft.com,scp字段是否包含User.Read。如果aud字段不正确,说明令牌并非颁发给Graph API的,需要检查请求令牌时的scope和客户端配置。
内容的提问来源于stack exchange,提问作者Inoel
相关产品推荐
相关产品推荐

