无法使用 Microsoft Graph API 使用用户名和密码提供程序的委派权限发送电子邮件

Unable to Send email using microsoft Graph API using delegated permission with Username and Password provider

我正在尝试使用具有委派权限的 UserNamepassword 提供商发送电子邮件,但出现如下错误 AADSTS50076:由于您的管理员更改了配置,或者因为您搬到了新位置,您必须使用多重身份验证来访问“00000003-0000-0000-c000-000000000000”。跟踪 ID:66ecbe3d-56d1-4850-8310-dd33cb8d3900 关联 ID:b2f61146-44d3-4997-ab99-5370bbac6b04

当我尝试使用 send.mail 的应用程序权限时,我能够以任何用户身份发送电子邮件。 但根据公司限制,我需要使用委托权限发送电子邮件。 由于我们的帐户已启用 MFA,因此如何实现此错误是关于多因素身份验证的。

IPublicClientApplication publicclientapplication = PublicClientApplicationBuilder .Create(clientId) .WithTenantId(tenantId) .Build();

UsernamePasswordProvider authprovider = new UsernamePasswordProvider(publicclientapplication, scopes);

等待graphServiceClient.Me .SendMail(电子邮件,假) .Request().WithUsernamePassword("用户名", passwordstring(stringpassword)) .PostAsync();

请在这里帮助选择。

如果用户启用了多重身份验证 (MFA),则无法使用 username/password 获取令牌,因为 ROPC 流 不支持 MFA , 根据 documentation:

If users need to use multi-factor authentication (MFA) to log in to the application, they will be blocked instead.

最简单的方法是使用auth code flow,它支持启用MFA的用户登录应用程序。使用该流程时,需要先登录用户获取授权码,然后使用授权码兑换access token。