【问题标题】:How can I verify if username and password is correct despite of Multifactor authentication is enabled with Azure AD?尽管使用 Azure AD 启用了多因素身份验证,但如何验证用户名和密码是否正确?
【发布时间】:2021-05-13 23:13:22
【问题描述】:

我想知道尽管在 Azure Active Directory 中强制执行 多因素身份验证,是否有任何方法可以检查输入的用户名和密码是否正确? 我已经设置了一个具有应用程序权限(经管理员同意)以及委派权限的应用程序,并且能够使用 ConfidentialClient 和使用 MSAL 库的 PublicClient 测试这两种方法。

我无法使用 PublicClient 方法在 IIS 中运行我的 Web 表单应用程序,该方法是交互式的,会显示 Microsoft 登录的弹出窗口。所以,我在这里看到的唯一方法是使用纯应用身份验证。(https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-authenticate-an-ews-application-by-using-oauth)

我可以使用机密客户端(仅限应用程序),因为我已获得所有必需的管理员同意以获取 OAuth 令牌,然后模拟用户访问 EWS 托管 api。

但要求是用户应该在加载他们的电子邮件之前在 webform 应用程序中输入他们的 Outlook 密码(来自需要 OAuth 令牌的 EWS 托管 API)。

在这一点上,我不确定下一步该做什么。请帮忙。如果您需要更多信息,也请告诉我。

有关我无法使用委托身份验证的更多参考:Why app is throwing error in test environment but working fine in local machine using ASP.NET Web Forms and MSAL?

【问题讨论】:

    标签: authentication webforms azure-active-directory msal


    【解决方案1】:

    据我了解,您想先通过 Azure AD 检查用户名和密码,然后使用机密客户端代表用户调用 API。

    这种方式有点骇人听闻,但我认为它适用于这种情况。只需尝试以下请求:

    POST https://login.microsoftonline.com/<tenant id>/oauth2/v2.0/token
    

    请求正文:

    client_id=<confidential client app id>
    &Client_secret=<confidential client app sec>
    &grant_type=password
    &scope=https://graph.microsoft.com/user.read
    &username=<username>
    &password=<password>
    

    如果用户输入了错误的用户名和密码,响应将是:

    如果用户名和密码都正确,则响应报告MFA相关信息:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多