使用 ADAL 的 Azure AD OAuth 身份验证:资源 ID 是什么?

Azure AD OAuth Authentication with ADAL: what's the resource ID?

我正在尝试从外部应用程序访问 SharePoint [Online] REST API。我已经在 Azure 中以管理员帐户注册了它,并为其分配了适当的 user-delegated 权限 (Office 365 SharePoint Online)。

我使用 ADAL.js 调用 acquireToken 并在我的 Authorization header 中使用该令牌。正在附加 valid-looking 令牌,但我在响应中收到以下 401 错误:

Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown

acquireToken() 方法确实采用 resource 参数,根据我在网上阅读的内容,SharePoint API 的这个值应该是 https://[tenant].sharepoint.com,但仅此而已return是一个 null 不记名令牌。

我所做的(触发之前的 401 错误)只是将资源设置为在 Azure 中生成的应用程序 ID。这最终被设置为我的 localStorage 缓存中的令牌。所以那个不记名令牌确实 return,但我得到了例外。

两个问题:

  1. 资源字符串是什么,在 acquireToken() 上调用的正确值是什么,看到用我的应用程序 ID 调用它(与我在我的客户端 ID 中使用的一样) ADAL 配置)是 return 成功成为不记名令牌的唯一值?是否有每个 Microsoft API 的正确资源字符串列表?我一直无法找到有关此主题的文档。

  2. 我在 Azure 上的配置有问题吗?

谢谢!

要使用 SharePoint 在线 REST,我们可以使用发现服务 REST 来查找 SharePoint 服务端点。您可以从响应的 serviceResourceId 中找到所有服务资源 ID。

您还可以考虑使用 Microsoft Graph,它通过单个端点公开来自 Office 365 和其他 Microsoft 云服务的多个 API。

有关发现服务 REST 的更多详细信息 API,您可以参考 here