【发布时间】:2023-03-25 18:01:01
【问题描述】:
我正在尝试从外部应用程序访问 SharePoint [Online] REST API。我已在 Azure 中以管理员帐户注册它并为其分配了适当的用户委派权限 (Office 365 SharePoint Online)。
我使用 ADAL.js 调用 acquireToken 并在我的 Authorization 标头中使用该令牌。附加了一个看起来有效的令牌,但我在响应中收到以下 401 错误:
Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown
acquireToken() 方法确实采用resource 参数,根据我在网上阅读的内容,SharePoint API 的这个值应该是https://[tenant].sharepoint.com,但它只返回一个null 不记名令牌。
我所做的(触发之前的 401 错误)只是将资源设置为在 Azure 中生成的应用 ID。这最终被设置为我的 localStorage 缓存中的令牌。所以那个不记名令牌确实返回了,但我得到了异常。
两个问题:
什么是资源字符串,以及在 acquireToken() 上调用的正确值是什么,看到使用我的应用程序 ID 调用它(与我在 ADAL 配置中使用的客户端 ID 相同)是唯一成功返回不记名令牌的值?每个 Microsoft API 是否都有适当的资源字符串列表?我一直无法找到有关此主题的文档。
我在 Azure 上的配置有问题吗?
谢谢!
【问题讨论】:
-
你有想过这个吗?我有同样的问题。我看到返回了一个额外的响应头(x-ms-diagnostics: 3000003;reason="Invalid Audience Uri 'f8f8d2ad-7c9d-4aac-80eb-3f00a263c879'.";category="invalid_client")
标签: azure sharepoint oauth office365 adal