ADAL 无外设本机客户端应用程序和多因素身份验证 (MFA)

ADAL headless native client app and multi-factor authentication (MFA)

我希望改编找到的代码 here 以编写有效相当于将文件上传到 OneDrive for Business 的脚本。据我了解,这实际上相当于 "headless" 本机客户端应用程序。我已经成功创建了一个 Azure AD 本机客户端应用程序,分配了权限,并创建了一个 AD 服务帐户以用于 "execute" 脚本(并将文件保存在 OneDrive 中)。

但是,我组织的 Azure AD 需要多重身份验证。当我将 ADAL Python 库用于 "acquire_token_with_username_password" 时,我收到 400 Bad Request 响应,错误描述如下:

adal.adal_error.AdalError: Get Token request returned http error: 400 and server response: {"error":"interaction_required","error_description":"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 'https://login.windows.net/[tenant].onmicrosoft.com'.\r\nTrace ID: [uuid]\r\nCorrelation ID: [uuid]\r\nTimestamp: [timestamp]","error_codes":[50076],"timestamp":"[timestamp]","trace_id":"[uuid]","correlation_id":"[uuid]"}

我也试过以服务帐户身份登录 O365 并创建一个 "app password" 并将其用作密码而不是实际帐户密码,但它也失败了。错误有些不同 - 由于密码无效而被拒绝。

鉴于这是一个 "headless" 应用程序(脚本),我有哪些验证选项?我正在努力寻找有用的信息,尤其是对于这个 headless/script 案例。

资源所有者密码凭证授予流程不支持 MFA。要与用户进行 MFA 所需的 Azure 活动目录集成,您可以考虑使用其他流程(例如 client credentials grant flow or authorization code grant flow)。