Connect-PnPOnline连接SharePoint报AADSTS700016错误求助
解决Connect-PnPOnline报AADSTS700016错误的方案
错误原因分析
报错中的应用ID 31359c7f-bd7e-475c-86db-fdb8c937548e 是PnP PowerShell默认使用的公共客户端应用。出现该错误的核心原因包括:
- 租户管理员禁用了第三方公共客户端应用的访问权限
- 该默认应用已从Azure AD租户中移除
- 旧版本PnP PowerShell依赖的默认应用已被微软弃用
具体解决步骤
1. 升级PnP PowerShell到最新版本
旧版本模块可能依赖已失效的默认应用ID,更新到最新版可解决此问题:
Update-Module -Name PnP.PowerShell -Force
更新完成后重新运行连接脚本,验证是否恢复正常。
2. 使用自定义Azure AD应用认证(推荐用于无人值守SSIS作业)
如果租户禁用了公共客户端应用,需自行注册Azure AD应用并通过其认证:
步骤A:注册Azure AD应用
- 登录Azure门户,进入Azure Active Directory → 应用注册 → 新注册
- 填写应用名称,选择"账户仅限此组织目录中的账户"
- 注册完成后,记录应用的客户端ID和租户ID
- 进入应用的API权限,添加SharePoint Online的权限(如
Sites.Read.All委派权限),并让租户管理员完成权限同意
步骤B:修改PowerShell脚本
替换为使用自定义应用ID的连接逻辑:
$SiteURL = "https://mycompany.sharepoint.com/proj" $UserName = "myUsername" $Password = "myPassword" $ClientId = "你的自定义应用客户端ID" $TenantId = "你的租户ID" $SecurePassword = ConvertTo-SecureString -String $Password -AsPlainText -Force $Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $UserName, $SecurePassword Connect-PnPOnline -Url $SiteURL -Credentials $Cred -ClientId $ClientId -Tenant $TenantId
3. 排查租户Azure AD设置(需管理员操作)
若需继续使用默认公共客户端应用,可检查租户相关设置:
- 登录Azure门户,进入Azure Active Directory → 企业应用 → 应用注册设置
- 将"允许公共客户端流"设置为"是"
注意:此为全局配置,可能存在安全风险,需确认安全需求后调整
4. 手动测试排查
手动执行时可使用交互式认证,确认站点和账户本身无问题:
Connect-PnPOnline -Url $SiteURL -Interactive
此方式仅用于测试,不适合SSIS无人值守作业场景。
内容的提问来源于stack exchange,提问作者A DC
相关产品推荐
相关产品推荐

