使用Rest API从安全SharePoint下载文件遇AudienceUriValidationFailedException错误
解决AudienceUriValidationFailedException异常的排查步骤
这个异常的核心原因是访问令牌的受众(aud)与SharePoint期望的受众不匹配,以下是针对你操作流程的具体排查点:
1. 检查令牌请求的Scope参数
你在Postman获取令牌时,必须指定正确的SharePoint资源Scope:
- 正确格式:
https://[COMPANY NAME].sharepoint.com/.default(注意是公司常规SharePoint站点域名,不是admin站点) - 若误用了
https://graph.microsoft.com/.default或其他无关Scope,令牌受众会指向Graph API而非SharePoint,必然触发验证失败。
2. 补全SharePoint应用权限XML配置
在appinv.aspx页面添加应用时,仅点击Lookup和Trust是不够的,需在"Permission Request XML"输入框中填写对应权限的XML,以应用权限模式(客户端密钥)访问为例:
<AppPermissionRequests AllowAppOnlyPolicy="true"> <AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="Read" /> </AppPermissionRequests>
AllowAppOnlyPolicy="true"必须开启,否则无法通过应用身份访问SharePoint。
3. 配置并授权Azure应用的API权限
在Azure门户的应用注册中:
- 添加SharePoint Online的应用权限(而非委托权限),比如
Sites.Read.All、Sites.FullControl.All等,匹配你需要的操作权限。 - 添加权限后,必须点击"授予管理员同意"(仅租户管理员可操作),否则令牌请求会因权限未授权失败。
4. 验证访问令牌的Aud字段
获取令牌后,用JWT解码工具(本地工具即可)查看aud字段:
- 正确值应为
https://[COMPANY NAME].sharepoint.com - 若
aud是其他值(如https://login.microsoftonline.com/xxx或Graph API地址),说明Scope参数错误,需修正后重新获取令牌。
5. 确认应用注册的受众配置
在Azure应用注册的"公开API"选项卡中,检查"已授权的受众"是否添加了目标SharePoint站点URL:https://[COMPANY NAME].sharepoint.com,确保应用被允许访问该资源。
内容的提问来源于stack exchange,提问作者Jacob Batista
相关产品推荐
相关产品推荐

