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

时间:2017-02-06 23:41:05

标签: azure sharepoint oauth office365 adal

我尝试从外部应用程序访问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,但只返回{{} 1}}持有人令牌。

我所做的(触发前一个401错误)只是将资源设置为Azure中生成的应用ID。最终在我的localStorage缓存中设置为令牌。所以持有者令牌确实返回,但我得到了例外。

两个问题:

  1. 什么是资源字符串,以及在acquireToken()上调用的正确值是什么,看到用我的应用ID调用它(同样我在我的ADAL配置中用作客户端ID) )是唯一成功返回承载令牌的值吗?是否有每个Microsoft API的正确资源字符串列表?我一直无法找到有关此主题的文档。

  2. 我在Azure上配置的问题是什么?

  3. 谢谢!

1 个答案:

答案 0 :(得分:2)

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

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

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