【发布时间】:2020-11-29 15:11:58
【问题描述】:
我正在构建一个 ASP .Net Core Web 应用程序。我使用 Azure ADB2C 进行用户身份验证,我想要一个管理员用户,它可以删除其他用户。我可以通过 Azure 门户从 Azure Active Directory 中删除用户,但我想直接从应用程序中删除。我在我的 Active Directory 租户中创建了一个管理员帐户,并为其授予了全局管理员权限。
我尝试使用 Graph API,但无法正常工作。我根据本网站上的说明创建了一个 IAuthenticationProved: https://docs.microsoft.com/en-us/graph/sdks/choose-authentication-providers?tabs=CS.
然后我创建了 GraphServiceClient 并尝试删除用户 (https://docs.microsoft.com/en-us/graph/api/user-delete?view=graph-rest-1.0&tabs=csharp),但出现错误:
System.AggregateException: '为 login.microsoftonline.com 返回 0 个帐户和 0 个代理帐户数据提供程序。成功?真的。)'
AuthenticationException:代码:authenticationChallengeRequired 消息:需要进行身份验证。
我的代码如下所示:
IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create("<My Client ID>")
.WithRedirectUri("<My Redirect Uri>")
.WithClientSecret("<My Client secret>")
.Build();
List<string> scopes = new List<string>();
scopes.Add("https://graph.microsoft.com/User.ReadWrite.All");
scopes.Add("https://graph.microsoft.com/Directory.ReadWrite.All");
AuthorizationCodeProvider authProvider = new AuthorizationCodeProvider(confidentialClientApplication,scopes);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
graphClient.Users[<UserId>]
.Request()
.DeleteAsync()
.Wait();
你能告诉我我做错了什么吗?或者也许还有其他方法可以做到这一点?提前谢谢!
【问题讨论】:
标签: asp.net-core azure-active-directory microsoft-graph-api azure-ad-b2c