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



我希望调整此处的代码,以编写有效的脚本,将文件上传到OneDrive for Business。据我所知,这实际上相当于一个"无头"的本地客户端应用程序。我已经成功创建了Azure AD本机客户端应用程序,分配了权限,并创建了一个AD服务帐户,用于"执行"脚本(并将文件保存在OneDrive中)。

但是,我所在组织的Azure AD需要多因素身份验证。当我使用ADAL Python库"acquire_token_with_username_password"时,我得到了一个400错误请求响应,错误描述如下:

adal.adal_error.AdalError:Get-Token请求返回http错误:400,服务器响应:{"error":"interaction_required","errordescription":"AADSTS50076:由于管理员更改了配置,或者由于您移动到了新位置,您必须使用多因素身份验证才能访问"https://login.windows.net/[tenant].onmicrosoft.com'。\r\n跟踪ID:[uuid]\r\n关联ID:[uuid]\r\n时间戳:[timestamp]","error_codes":[50076],"timestamp":"[timestamp]","trace_ID":"[uuid]","correlation_ID":"[uuid]"}

我也尝试过作为服务帐户登录O365,创建一个"应用程序密码",并将其用作密码而不是实际帐户密码,但也失败了。这个错误有些不同——由于密码无效,它被拒绝了。

考虑到这是一个"无头"应用程序(脚本),我有哪些验证选项?我很难找到好的信息,尤其是对于这个无头/脚本的案例。

资源所有者密码凭据授予流不支持MFA。要与用户MFA所需的Azure active directory集成,您可以考虑使用其他流(例如,客户端凭据授予流或授权码授予流)。

最新更新