Azure AD OAuth与ADAL的身份验证:什么';资源ID是什么?

Azure AD OAuth与ADAL的身份验证:什么';资源ID是什么?,azure,sharepoint,oauth,office365,adal,Azure,Sharepoint,Oauth,Office365,Adal,我正在尝试从外部应用程序访问SharePoint[联机]REST API。我已在Azure中以管理员帐户注册了它,并为其分配了相应的用户委派权限(Office 365 SharePoint Online) 我使用ADAL.js调用acquireToken,并在我的Authorization头中使用该令牌。正在连接一个外观有效的令牌,但我在响应中收到以下401错误: 引发了类型为“Microsoft.IdentityModel.Tokens.AudienceEurivalidationFailed

我正在尝试从外部应用程序访问SharePoint[联机]REST API。我已在Azure中以管理员帐户注册了它,并为其分配了相应的用户委派权限(
Office 365 SharePoint Online

我使用ADAL.js调用
acquireToken
,并在我的
Authorization
头中使用该令牌。正在连接一个外观有效的令牌,但我在响应中收到以下401错误:

引发了类型为“Microsoft.IdentityModel.Tokens.AudienceEurivalidationFailedException”的异常

acquireToken()方法确实采用了一个
资源
参数,根据我在线阅读的内容,SharePoint API的此值应该是
https://[tenant].SharePoint.com
,但它只返回一个
null
承载令牌

我所做的是(触发之前的401错误)简单地将资源设置为Azure中生成的应用程序ID。它最终被设置为本地存储缓存中的令牌。因此,承载令牌确实返回,但我得到了一个例外

两个问题:

  • 资源字符串是什么,调用acquireToken()的正确值是什么,因为使用我的应用程序ID(与我在ADAL配置中使用的客户端ID相同)调用它是唯一成功返回承载令牌的值?是否有每个Microsoft API的适当资源字符串列表?我一直很难找到关于这个主题的文档

  • 我在Azure上的配置有问题吗


  • 谢谢

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

    您还可以考虑使用Office 365和其他微软云服务通过单个端点公开多个API。


    有关discovery service REST API的更多详细信息,您可以参考。

    您知道这一点吗?我也有同样的问题。我看到返回了一个额外的响应头(x-ms-diagnostics:3000003;reason=“无效的访问群体Uri”f8f8d2ad-7c9d-4aac-80eb-3f00a263c879”。“类别=“无效的客户端”)