Python下载Office 365 SharePoint文件报AADSTS50126认证错误求解
AADSTS50126 认证报错解决方案
Exception: ('Error authenticating against Office 365. Error from Office 365:', 'AADSTS50126: Error validating credentials due to invalid username or password.')
该报错出现时即使确认账号密码正确,也大概率是以下几个原因导致,对应解决方案如下:
- 多因素认证(MFA)拦截:目前绝大多数企业Office 365租户默认开启了多因素认证,你所用的
shareplum库的用户名密码认证属于 legacy 认证协议,不支持MFA校验。
解决方法:测试场景下可临时对该用户关闭MFA;生产场景下可在Azure AD账号设置中生成应用密码(需要账号支持应用密码功能),替换config中的密码字段即可。 - Legacy认证被全局禁用:为了安全合规,很多租户会全局禁用Legacy身份验证,用户名密码的认证方式会被直接拦截。
解决方法:第一种是在Azure AD的条件访问策略中,给该用户单独放开Legacy认证权限;第二种更推荐改用OAuth 2.0客户端凭据流认证,使用应用ID、应用密钥代替用户名密码进行认证,可切换使用Office365-REST-Python-Client库实现该认证逻辑。 - JSON配置转义错误:如果你的密码中包含
\、"、'等JSON特殊字符,写入config.json时未按规范转义,会导致程序读取到的密码和实际密码不一致。
解决方法:检查config.json的password字段,特殊字符按JSON规范转义,比如反斜杠要写为\\,双引号要写为\"。 - 根域名配置错误:确认config中的
url字段是你租户的SharePoint根域名,不要携带任何站点路径,示例中的https://company.sharepoint.com格式是正确的,需核对是否和实际域名一致。
额外注意:你代码中拼接SharePoint文件夹路径时使用了Windows风格的反斜杠\\,SharePoint内部路径使用正斜杠/,认证通过后可能会触发路径找不到的问题,可把路径拼接逻辑改为'/'.join([SHAREPOINT_DOC, folder_name])。
内容的提问来源于stack exchange,提问作者Karthik K Kashi
相关产品推荐
相关产品推荐

