调用GetAccessTokenForUserAsync获取Graph API令牌时遇AADSTS50020错误
解决C#调用GetAccessTokenForUserAsync()时的AADSTS50020错误
错误信息
Error = invalid_grant,Error_description = "AADSTS50020: 来自身份提供商'https://sts.windows.net//'的用户账户'{EmailHidden}'不存在于租户'ABC'中,无法访问该租户内的应用''(xyz-app)。需先将该账户添加为租户外部用户,注销后使用其他Azure Active Directory用户账户重新登录。"
问题本质
当前使用的用户账户未被纳入目标租户ABC的用户体系,无法访问该租户下注册的应用xyz-app,导致获取Graph API令牌时触发invalid_grant错误。
解决方案
- 将外部用户添加到目标租户
- 登录Azure门户,进入租户ABC的Azure Active Directory管理界面
- 依次进入「外部标识」>「所有外部用户」>「邀请用户」
- 填入报错中{EmailHidden}对应的实际邮箱地址,配置该用户对xyz-app的访问权限
- 发送邀请,待用户完成邀请接受流程后,即可使用该账号登录应用并获取令牌
- 切换至租户内合法账号
- 注销当前应用的登录会话
- 使用属于租户ABC的Azure AD账号重新登录应用,再次调用
GetAccessTokenForUserAsync()尝试获取令牌
- 验证应用租户配置
检查C#应用中配置的Azure AD租户ID是否为目标租户ABC的ID,避免因配置错误导致请求发送至错误租户
内容的提问来源于stack exchange,提问作者bilal_khan
相关产品推荐
相关产品推荐

