【发布时间】:2023-02-01 22:53:50
【问题描述】:
我正在尝试使用 GetAccessTokenForUserAsync() 在我的 C# 应用程序中获取图形 API 访问令牌。
它抛出以下错误:
错误 = invalid_grant Error_description = "AADSTS50020: 来自身份提供者'https://sts.windows.net/ 的用户帐户'{EmailHidden}'--/' does not exist in tenant 'ABC' and cannot access the application '--**-****'(xyz-app) 在该租户中。需要先在租户中将账号添加为外部用户。注销并使用不同的 Azure Active Directory 用户帐户重新登录
【问题讨论】:
-
用户是否存在于您使用的目录中?您使用什么身份验证方法?
-
用户存在于自己的租户中。我正在使用 (tokenAcquisition.GetAccessTokenForUserAsync)
-
var confidentialClientApplication = ConfidentialClientApplicationBuilder .Create(_azureAd.ClientId) .WithTenantId(tenantId) .WithClientSecret(_azureAd.ClientSecret) .Build();尝试 { _tokenAcquisition.GetAccessTokenForUserAsync(scopes).ConfigureAwait(false).GetAwaiter().GetResult(); } 赶上(异常前){ }
-
该应用程序是否已注册为多租户应用程序? IE。它是否允许从其他目录登录或仅允许在其中创建应用程序的目录登录?
-
错误消息很清楚,在应用程序中登录的用户在 azure 广告应用程序注册的租户中不存在。您必须在租户中有一个Azure 广告应用程序,请使用同一租户中的用户帐户登录。
标签: azure asp.net-core azure-active-directory microsoft-graph-api