You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python访问启用MFA的Office 365 SharePoint列表报错及替代方案问询

SharePoint MFA环境无管理员权限下的Python访问替代方案

现有方案报错原因

你之前用到的所有认证方案都是基于传统用户名密码硬编码的方式,在已启用MFA和条件访问策略的SharePoint环境中,微软早已禁用这类低安全级别的认证方式,所以会触发AADSTS系列报错、403权限拒绝是正常结果。

可行替代方案

  • 方案1:使用Office365-REST-Python-Client的交互式浏览器认证
    该方案不需要申请客户端ID、不需要管理员权限,认证时会自动唤起默认浏览器完成MFA校验,权限和你个人账号在网页端的SharePoint权限完全一致。
    代码示例:
    from office365.sharepoint.client_context import ClientContext
    
    site_url = "https://你的租户.sharepoint.com/sites/你的站点名"
    ctx = ClientContext(site_url).with_interactive_credentials()
    # 执行后会弹出浏览器登录,完成MFA验证即可
    web = ctx.web.get().execute_query()
    print(f"站点名称: {web.title}")
    # 读取列表示例
    target_list = ctx.web.lists.get_by_title("你的列表名")
    items = target_list.items.get().execute_query()
    for item in items:
        print(item.properties)
    
  • 方案2:复用浏览器Cookie直接调用REST API
    如果你无法使用交互式登录,可先在浏览器登录SharePoint完成MFA校验,从浏览器开发者工具的网络请求中复制FedAuth和rtFa两个Cookie值,直接通过requests携带Cookie调用SharePoint REST API,无需额外认证配置。
    代码示例:
    import requests
    
    site_url = "https://你的租户.sharepoint.com/sites/你的站点名"
    list_api_url = f"{site_url}/_api/web/lists/getbytitle('你的列表名')/items"
    headers = {
        "Accept": "application/json;odata=verbose",
        "Cookie": "FedAuth=你复制的FedAuth值; rtFa=你复制的rtFa值"
    }
    res = requests.get(list_api_url, headers=headers)
    print(res.json())
    
    注意:Cookie有效期通常为几小时,过期后重新从浏览器复制即可。
  • 方案3:本地同步后直接读取
    如果仅需要读取列表数据,可在OneDrive中开启对应SharePoint站点的本地同步功能,Python直接读取本地同步后的列表文件即可,完全不需要处理认证逻辑,适配所有权限限制场景。

内容的提问来源于stack exchange,提问作者Omega

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:57:03