2016-03-23 10 views
0

グラフ、アズールADなどの他のMicrosoft APIにアクセスできるようにするために、Sharepoint REST APIを使用してリストからアイテムを取得するのに成功しましたが、ちょうど最近ADAL.JSを統合することに決めましたCAML-query to Sharepoint REST APIの結果が「無効なオーディエンスURI」ですか?

正常Adal.jsを認証した後

は自動的に権限を持つビットをいじった後に正常に動作REST呼び出しに

Authorization: Bearer eyJ..ヘッダを付加します。このアプリは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は、単にこれまでのところ、私の唯一の解決策は、これを削除するために、実際のAdal.JSライブラリを変更することです Invalid audience Uri '5exx5cef-x7xx-4xxx-axxx-4xxxx2e40'. を返すよう生憎、これは動作しません。この特定のエンドポイントのヘッダー。

私の質問は、誰かがAdal.JSを使用してSharepoint REST APIに対してCAMLクエリを実行したか、同様の問題に遭遇して何らかの洞察を提供できることです。

私はそれが構成上の問題だと思っていますが、何をすべきかに迷っています。

答えて

1

この場合、エンドポイント 'https://mydomain.sharepoint.com'を強制的にヌルに設定する必要があります。そうでなければ、 "mydomain.sharepoint.com"への各リクエストは、SharePointサーバーによって検証されるグラフ認証ヘッダーを追加します。アプリはSharePointではなくAzure ADに登録されているため、無効なオーディエンスとみなされます。

ここに参考になる回避策があります。あなたの側で動作するかどうか教えてください。

(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 
      ); 
    }; 
})(); 
+0

ジェフリー、返信ありがとうございます。残念ながら、これは私の質問には答えません。 SPリストとグラフのクエリは正常に動作します。 問題は、Sharepoint分類(通常のエンドポイントでは不可能)を照会するのに必要なCAMLクエリーで/ GetItemsエンドポイントをヒットできないことです。 だから、ADALとCAML-queriesは、どんな提案ですか? –

+0

@Jonas、この場合、エンドポイント 'https://mydomain.sharepoint.com'をnullに設定する必要があります。私は自分の答えを更新しました。 –

+0

閉じる!これにより、他のSPリクエストからAuthorizationヘッダーが削除されました(すばらしく、どこに行ってもその方法を見つけることができませんでした)。それでも、/ GetItemsエンドポイントに追加されますが、理由は分かりませんが、POST要求です。手動でAuthorizationヘッダーを削除すると、ここで動作します。 コメントの後の作業の例(許可なし): https://my-own-domain.sharepoint.com/sites/dev/_api/web/lists/getByTitle('generalinformation')/items?$select=タイトル、jyfo 有効ではありません(認証ヘッダーはまだOPのエラーです): https://my-own-domain.sharepoint.com/sites/dev/_api/web/lists/GetByTitle('News')/GetItems –

関連する問題