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

使用PnP PowerShell非交互式访问SharePoint遇AADSTS53003认证错误

SharePoint非交互式登录遇AADSTS53003错误排查与解决

问题背景

我需要提取SharePoint列表架构并实现自动化,因此采用PnP PowerShell模块进行非交互式登录操作。已按照PnP指引创建应用注册,但未添加平台与重定向URI。使用拥有网站完全控制权限的个人账号密码本地测试脚本时,出现以下错误:
Error occurred: AADSTS53003: Access has been blocked by Conditional Access policies. The access policy does not allow token issuance. The returned error contains a claims challenge.

测试代码:

$encryptedPassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential -ArgumentList ($username, $encryptedPassword)
Connect-PnPOnline -Url $targetSite -ClientId $ClientId -Credentials $creds -Verbose

我们希望避免使用自签名证书(需内部审批流程),且PnP认为密钥/访问令牌属于旧方法,不清楚是什么阻止了程序访问站点?


核心原因

这个错误是Azure AD条件访问策略直接拦截了非交互式登录请求,常见触发场景:

  • 租户启用了针对用户的强制MFA(多因素认证)策略,而当前使用的纯密码流不支持MFA验证
  • 条件访问策略限制仅允许受信任/合规设备登录,脚本运行的设备不在信任范围内
  • 应用注册配置缺失(如未设置重定向URI、权限类型错误),被策略判定为非合规请求

无需证书的解决步骤

1. 补全应用注册基础配置

  • 进入Azure AD应用注册页面,添加重定向URI:选择「公共客户端/移动和桌面应用」类型,填入http://localhost(PnP PowerShell公共客户端模式默认依赖此地址)
  • 为应用注册授予SharePoint Sites.FullControl.All应用权限(委托权限不适用于非交互式场景),并完成管理员全局同意

2. 改用兼容MFA的非交互式登录方式

若租户强制MFA,纯密码流必然被拦截,推荐使用设备代码流(无需证书、无需存储密码):

Connect-PnPOnline -Url $targetSite -ClientId $ClientId -Interactive -DeviceCode

首次运行会生成设备验证代码,用有权限的账号在任意设备上完成MFA验证后,脚本会获得持久化令牌缓存,后续非交互式运行可自动复用验证状态。

3. 协调管理员调整条件访问策略

  • 联系租户管理员,确认是否有针对「所有云应用」或「SharePoint Online」的条件访问策略,是否允许公共客户端应用(PnP PowerShell属于此类)通过
  • 若允许,可在策略中添加例外:将目标应用注册或脚本运行设备纳入信任范围

关键注意点

  • PnP官方推荐的非交互式方案中,设备代码流是无需证书的最优选择,既规避了密码存储风险,也能兼容MFA和条件访问策略
  • 避免用个人账号密码做自动化:个人账号的MFA要求、密码过期会导致脚本频繁失效,应优先采用应用权限+设备代码/证书的组合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:20:02