使用 Python 验证 Sharepoint REST API 时发生未经授权的错误

Unauthorized error while authenticating Sharepoint REST API using Python

我正在尝试通过使用多因素 ADFS 身份验证的 REST API 从 SharePoint Online 数据库下载文件,到目前为止我找到了这些帖子(Post1, Post2) which talk about sending a SAML request to STS to receive a security token from https://login.microsoftonline.com/extSTS.srf,我已经找到网上有多个使用相同方法验证其请求的示例。但是,当我将 SAML 请求发送到上述 Microsoft URL 时,我收到以下错误。

AADSTS50126: Error validating credentials due to invalid username or password.

我拥有对 SharePoint 数据库的适当访问权限,因为在使用具有经过身份验证的会话的浏览器时,我能够获得对 API 请求的有效响应(用于检查可用列表而不是用于身份验证)。关于我可能做错了什么的任何想法,或者即使 MFA 保护的 SharePoint 库可以进行身份​​验证。

在任何 Microsoft 文档中都没有官方文字来证实这一点。但是MFA账户+AAD令牌不兼容。

您必须使用未启用 MFA 的服务帐户 (username/password)。当您使用服务帐户调用 SPO 网络 api 获取令牌时,这将起作用。

当您的浏览器会话处于打开状态时,令牌将在 cookie 中可用,您将能够毫无问题地访问该库。这同样适用于 POSTMAN 或 SOAP-UI 测试。

因为 MFA 需要用户交互,所以这是不可能的。请参阅此 github 问题:Trouble spo login with an account with multi-factor authentication

我们在 Dynamics CRM 中采用相同的方法 "Application User" 概念。