【问题标题】:MSGraph Multi-Factor Authentication "interaction_required"MSGraph 多因素身份验证“interaction_required”
【发布时间】:2021-11-06 09:23:52
【问题描述】:

我正在使用 Microsoft Graph 登录端点:login.microsoftonline.com/[tenantId]/oauth2/token,授予类型为“密码”的用户登录:

{
    "grant_type": "password",
    "client_id": "xxx",
    "client_secret": "xxx",
    "scope": "openid",
    "resource": "https://graph.microsoft.com",
    "username": "username",
    "password": "********",
}

当我向未在我们的 AD 上注册多因素身份验证的用户发布此内容时,我得到了预期的结果,包括 access_token 和 refresh_token

但是,对于已注册的用户,我会返回一个 HttpStatusCode.BadRequest,错误为 "interaction_required"

根据微软的文档发现here

在这种情况下,您的应用会收到一个 400 和一个interaction_required 获取访问令牌期间出错或出现 403 调用 Microsoft Graph 时出现不足的声明错误。在这两种情况下, 错误响应包含附加信息,可以 提交给授权端点以质询用户 附加信息(如多重身份验证或设备 注册)。

但是,我在结果中看不到任何其他信息,也找不到有关后续步骤的更多信息。我得到的 JSON 是这样的:

{
    "error":"interaction_required",
    "error_description":"AADSTS50079: Due to a configuration change made by your administrator, or because you moved to a new location, you must enroll in multi-factor authentication to access '00000003-0000-0000-c000-000000000000'.\r\nTrace ID: aee10c85-fd12-42ec-be6c-76d546500100\r\nCorrelation ID: 0ee3ebac-f702-4fbc-be76-fd6a291ad488\r\nTimestamp: 2021-09-09 17:45:24Z",
    "error_codes":[50079],"timestamp":"2021-09-09 17:45:24Z",
    "trace_id":"aee10c85-fd12-42ec-be6c-76d546500100",
    "correlation_id":"0ee3ebac-f702-4fbc-be76-fd6a291ad488",
    "error_uri":"https://login.microsoftonline.com/error?code=50079",
    "suberror":"basic_action"
}

但我正在回复“interaction_required”,并与我们的 AD 管理员确认他们肯定已注册。所以我对解决这个问题的后续步骤有点茫然。

【问题讨论】:

    标签: authentication active-directory azure-active-directory


    【解决方案1】:

    原因:用户正在尝试一种需要多重身份验证的身份验证方法

    尝试捕获您收到的错误,并通过引用此MS docs,根据您的流程场景的步骤执行新请求

    Microsoft Graph 在构建应用程序时有特殊注意事项 条件访问环境。由于条件访问策略是 分配了特定的数据集,Azure AD 将强制执行 Conditional 基于 Graph 背后的数据的访问策略 - 而不是 Graph 自己。

    (或检查以下几点)

    条件访问策略阻止非交互式流工作。

    可能的解决方案...

    1. 改用交互式流程。
    2. 如果您使用交互式流程并且仍然出现此错误,请确保 openid 是交互式登录期间的范围之一。在交互式登录并尝试将授权代码交换为访问令牌后,您可能会收到错误消息...

    例子:

    https://login.microsoftonline.com/contoso.onmicrosoft.com/oauth2/authorize?client_id=#...#
        &response_type=code
        &scope=openid groups.read.all
        &nonce=1234
        &redirect_uri=https://app.contoso.com
    Notice "scope=openid groups.read.all" in the request above
    
    1. 将客户端应用程序添加到条件访问策略的例外列表中
    2. 将用户添加到条件访问策略的例外列表中
    3. 如果您没有使用条件访问策略并且直接为用户启用了 MFA,那么最后一件事,如果上述解决方案不适合您,请为用户禁用 MFA。
    4. 或者您可以使用基于证书的身份验证而不是 MFA

    参考资料:

    1. login-to-azure-web-application-fails-with-aadsts50079
    2. SO thread

    【讨论】:

      猜你喜欢
      • 2013-08-31
      • 1970-01-01
      • 2017-12-16
      • 2014-08-31
      • 2018-07-30
      • 2020-02-21
      • 2015-05-23
      • 2014-12-31
      • 2019-07-21
      相关资源
      最近更新 更多