2017-05-10 24 views
0

Microsoft Graph APIを使用した内部会議室アプリケーションを構築しています。私は、Schema ExtensionでEventオブジェクトを拡張したいと考えています。Microsoft Graph、Schema Extensionの登録

ドキュメント:

{ 
    "url": "https://graph.microsoft.com/beta/schemaExtensions", 
    "status": "403 Forbidden", 
    "headers": { 
     "request-id": "e1e36210-6c4c-4ed8-afb1-c9ee6f6362ed", 
     "client-request-id": "e1e36210-6c4c-4ed8-afb1-c9ee6f6362ed", 
     "x-ms-ags-diagnostic": "{\"ServerInfo\":{\"DataCenter\":\"North Europe\",\"Slice\":\"SliceA\",\"ScaleUnit\":\"001\",\"Host\":\"AGSFE_IN_2\",\"ADSiteName\":\"DUB\"}}", 
     "duration": "742.4624" 
    }, 
    "body": { 
     "error": { 
      "code": "Authorization_RequestDenied", 
      "message": "Insufficient privileges to complete the operation.", 
      "innerError": { 
       "request-id": "e1e36210-6c4c-4ed8-afb1-c9ee6f6362ed", 
       "date": "2017-05-10T10:05:37" 
      } 
     } 
    } 
} 

I:新しいスキーマ拡張を登録するには、クエリを実行している場合

  • Tutorial Example
    • API Reference
    • は、しかし、私はこのHTTPレスポンスを受信して​​います私のアプリケーションがプレ必要なスコープパーミッションは Directory.AccessAsUser.Allであり、このパーミッションを追加してから16時間以上経過しています。私は検証済みのドメインも持っているので、ドキュメント参照ごとに名前空間はOKでなければなりません。コード内

      私のAPIのクエリ:

      Outlook.test({ 
          version: 'beta', 
          resource: 'schemaExtensions', 
          method: 'POST', 
          body: { 
           id: 'thehivegroup_beethere', 
           description: 'Extension for event presence status', 
           targetTypes: [ 'Event' ], 
           properties: [ 
            { name: 'checkIn', type: 'String' }, 
            { name: 'checkOut', type: 'String' } 
           ] 
          } 
      }) 
      .then(result => console.log(result), err => console.error(err)) 
      

      URL https://graph.microsoft.com/beta/schemaExtensionsに許可トークンを持つボディとヘッダにエンコードされたJSONとPOSTになります。

      beethereなどの異なるIDを試してみましたが、名前空間のエラーが発生しました。このため、正常に動作するはずです。

      ここで有効にする必要があることを認識している他のスコープのアクセス許可はありません。エラーは私にはあまりにもあいまいで、何であるか特権が不十分です。


      EDIT:は手動APIに必要な範囲の権限とケースでいくつかの余分なものが、それでもスキーマ拡張を登録するためのクエリを追加し、テナントで管理者としてGraph Explorerでクエリを実行しましたアプリケーションが受け取るのと同じエラーメッセージで動作しません。したがって、私のコードでは間違いなくMicrosoft Graph APIに問題はありません。マイクロソフトに問題の調査を依頼する連絡先や方法はありますか?

    答えて

    1

    Directory.AccessAsUser.Allは委任されたアクセス許可のみです(ディレクトリベースのAPIへのアクセスを許可するため、委任されている必要があります)。それはアプリケーション権限ではないため、役割の主張には表示されません。

    私が知る限り、アプリケーションフロー(クライアントの資格情報)を使用してスキーマ拡張を作成することはできません。また、「コード認可」フローを使用する必要があります。これが必須条件である場合はお知らせください。さらに、アプリケーション登録の一環としてスキーマ定義登録の経験を見たいかどうかを知りたいのですが...

    また、現在、グラフエクスプローラでスキーマ拡張定義を作成(または管理)できません。定義を作成するには、拡張定義を作成するアプリケーションの管理者または所有者でなければならず、作成要求はそのアプリケーション(グラフエクスプローラーではない)から取得する必要があります。この最後の制約を緩和することがあります。

    コードスニペットを表示するには、ここをクリックしてください(ただし、JSではなくUWP c#アプリです):https://github.com/microsoftgraph/uwp-csharp-snippets-rest-sample

    また、スキーマ拡張もGAになっており、v1.0エンドポイントで使用できます。このことができます

    希望、しかし

    +0

    ありがとう、それは委任されたアクセス許可の仕組みのニュアンスを説明します。 委任されたパーマをグラフエクスプローラで処理できることを確認します。 また、REST/Graph APIを介して排他的にではなく、スキーマ拡張を登録および管理することができます。スキーマの拡張を管理することがまれであることを考えれば、多くのコードとロジックを構築しなければならず、個々のアプリケーションのスキーマ拡張の管理者ユーザーインターフェイス全体を構築する必要があります。これは何とかAzure Portalで管理できますか、またはスキーマ拡張を管理するための単一目的のアプリケーションを持つことができますか?スキーマがGAになったら、再利用できます –

    +0

    確かにNexii。 UserVoiceでUIのリクエストを追加してください(https://officespdev.uservoice.com/forums/224641-feature-requests-and-feedback/category/101632-microsoft-graph-o365)。 -rest-api。早急にグラフエクスプローラを使用できるように修正する必要があります。 –

    +1

    Graph Explorerでスキーマ拡張定義を作成/管理できるように修正する前に、Postmanを使用してこれらの操作を実行できます(AAD v2エンドポイントを使用してMicrosoft Graphへのアクセストークンを取得する必要があります) –

    1

    RESTを作成するこのスキーマ拡張は、私にとってはうまく機能します。トークンにDirectory.AccessAsUser.All権限が含まれていることを確認してください。このsiteから、scpのトークンをトークンで解析できます。

    +0

    は、かかわらず、スキーマ拡張にまったく同じREST呼び出しは、我々が付与されたと 'Directory.AccessAsUser.All'許可を管理者アカウントに管理者権限を承諾グラフエクスプローラに失敗しました範囲。 グラフエクスプローラのトークンにスコープが正しく含まれていないことを意味しますか? アプリケーションのアクセストークンでロールを確認し、サーバーベースの認証フローで何がわかるかを確認します。 –

    +0

    さて、私はアプリケーションのクライアントクレデンシャルフローを使用していますが、私は 'scp'を見ませんが、役割配列にはアクセストークンの 'Directory.AccessAsUser.All'パーミッションスコープがありません。 –

    +0

    アプリケーションのAzureポータルで既に同じアクセス許可の範囲を事前に設定していたので、私は困惑していますが、何らかの理由で私たちのトークンでそれを受け取ることはありません。私はAzure AD v2.0に移行しようとすることができますが、私たちのアプリケーションは現在のadal-nodeクライアントライブラリの周りに構築されており、クライアントの資格情報をサポートするこの新しいバージョン用のJSライブラリはないと思われます。 –

    関連する問題