使用用户名和密码的 Azure AD 身份验证以及 MFA

Azure AD authentication with Username and Password and also have MFA

我使用 MSAL (RPOC) 和 .net 4.6.1 实现了 Azure AD 身份验证。如果未启用用户的 MFA,我可以对用户进行身份验证。如果它被启用然后我收到一个错误

**Microsoft.Identity.Client.MsalUiRequiredException: 'AADSTS50076: Due to a configuration change made by your administrator, or because you moved to a new location, you must use multi-factor authentication to access '00000003-0000-0000-c000-000000000000'.**

这是我正在使用的代码。

 public async Task<string> ValidateUserAsync()
    {

        string authority = string.Format("https://login.microsoftonline.com/{0}", tenant);
        string[] scopes = new string[] { "User.Read" };
        IPublicClientApplication app;
        app = PublicClientApplicationBuilder.Create(clientId)
                  .WithAuthority(authority)
                  .Build();
        var securePassword = new SecureString();
        foreach (char c in password.ToCharArray())  
            securePassword.AppendChar(c);  
        var result = await app.AcquireTokenByUsernamePassword(scopes, username, securePassword).ExecuteAsync();
        return result.IdToken;
    }

如何实施 MFA?喜欢接收代码短信并将其传递给这个吗? 我将拥有自己的 UI 来接受代码

你不能。 为了让用户执行 MFA,他们必须在 Microsoft 登录页面上执行。 这是 ROPC 身份验证流程的限制之一。 我建议你使用不同的流程,不要收集用户密码。