对Sharepoint REST API进行CAML查询会导致“无效的受众群体URI”?

时间:2016-03-23 08:53:40

标签: sharepoint office365 office365api

我们已成功使用Sharepoint REST API一段时间从列表中检索项目,但最近才决定集成ADAL.JS,以便能够访问其他Microsoft API,如Graph,Azure AD等。

成功验证Adal.js后会自动添加

Authorization: Bearer eyJ.. REST调用的标题在稍微调整权限后工作正常。该应用程序是一个在Sharepoint中托管的Angular SPA,因此这个标题不是必需的,但并不重要。

但是,我们的一些REST调用要求我们也查询分类法,因为普通的Sharepoint REST API不支持,我们必须点击(/ _api / web / lists / GetByTitle('ListName') ) / GetItems 端点),CAML查询作为请求有效负载,即https://mydomain.sharepoint.com/sites/dev/_api/web/lists/GetByTitle('News')/GetItems 不幸的是,这不起作用,因为API只是返回 Invalid audience Uri '5exx5cef-x7xx-4xxx-axxx-4xxxx2e40'. 到目前为止,我唯一的解决方案是修改实际的Adal.JS库以删除此特定端点的此标头。

所以,我的问题是 - 有没有人使用Adal.JS对Sharepoint REST API进行CAML查询,或遇到类似问题并提供任何见解?

我怀疑这是一个配置问题,但我有点不知所措。

1 个答案:

答案 0 :(得分:1)

在这种情况下,您需要强制设置端点' https://mydomain.sharepoint.com'为空。否则,每个请求都是" mydomain.sharepoint.com"将添加一个由SharePoint服务器验证的图形授权标头。由于应用程序是在Azure AD而非SharePoint上注册的,因此它将被视为无效的受众。

以下是供您参考的解决方法,如果它适用于您,请告诉我。

(function () {
  angular.module('app', [
    'ngRoute',
    'AdalAngular'
  ]).config(config);

  // Configure the routes.
    function config($routeProvider, $httpProvider, adalAuthenticationServiceProvider) {
        $routeProvider
            .when('/', {
                templateUrl: 'views/main.html',
                controller: 'MainController',
                controllerAs: 'main'
            })

            .otherwise({
                redirectTo: '/'
            });

        // Initialize the ADAL provider with your clientID (found in the Azure Management Portal) and the API URL (to enable CORS requests).
        adalAuthenticationServiceProvider.init(
            {
                clientId: clientId,
                // The endpoints here are resources for ADAL to get tokens for.
                endpoints: {
                    'https://graph.microsoft.com': 'https://graph.microsoft.com',
                    'https://mydomain.sharepoint.com': null
                }
            },
            $httpProvider
            );
    };
})();