2017-06-29 7 views
1

目的:、管理者の1時間の同意がすべての会社のメールボックスを読むことができるようになるグラフAPIのいくつかの機能を使用して、およびOutlookのREST APIの一部(ウェブフックはもっと進んでいる)グラフAPIエンドポイントとOutlook RESTエンドポイントの両方の管理者同意を得るにはどうすればよいですか?

マイクロソフトのドキュメントを読むと、最適なフローは「OAuth 2.0クライアントの資格認定」と思われます。

  • 私のアプリはapps.microsoft.comで作成され、スコープはすべてのメールボックスにアクセスするように定義されています。
  • 管理者はhttps://login.microsoftonline.com/common/adminconsent?client_id=XXX&redirect_uri=XXXに接続します。
  • それから私は、トークンが返されgrant_type=client_credentials&client_id=XX&client_secret=XX&scope=https://graph.microsoft.com/.default

  • https://login.microsoftonline.com/{tenant}/oauth2/v2.0/tokenにトークンを取得します。すべてがMicrosoft Graphで完全に機能します。

しかし、私はhttps://outlook.office.com/.defaultにスコープを変更し、トークンを取得するとき、私は「強さ1の代わりに、2と弱すぎるトークン」401として、私のクエリのために拒否されたトークンを取得。

ここでスコープを変更する必要がありますか?または、別の認証フローが必要ですか?

おかげ

+0

これを私の側でテストしましょう。物事はアプリのポータルで変更されていると私はあなたに現在の情報を伝えていることを確認したい:) –

+0

いくつかの講義の後、私はプロトコルがOutlook REST APIのために異なることがわかった:それはJWTトークンを作成するX509証明書が必要です。これは大丈夫です(トークンが弱すぎるのではなく、「不正なアクセス」ではありません)。問題が発生しました:Outlook API用のApp Authorizationを付与する必要があります.apps.dev.microsoft.comポータルからはできません(グラフスコープのみ)、apps.dev.microsoft.comを通じて作成された「App URI ID」がアプリケーションにないため、クライアントmanage.windowsazureポータルから認証を更新できません(マニフェストによる手動更新は – Sybic2001

答えて

0

Outlookのエンドポイントは、X509証明書の資格を取得したトークンではなく、クライアントの秘密を必要とし、それはまた、適切な観客とトークン(JWTでaudパラメータ)が必要です。これらをすべて取得するには、Azureポータル(portal.azure.comまたはmanage.windowsazure.com)にアプリを登録し、アプリ登録のマニフェストに公開鍵をアップロードする必要があります。私はここでこれを行うサンプルを持っています:https://github.com/jasonjoh/outlook-fetch

残念ながら、Outlook専用のスコープをApp登録ポータル(apps.dev.microsoft.com)に追加する方法はありません。この場合、Azure登録メソッドが必要になります。

+0

ありがとうございましたJasonさん、ついにあなたのやり方に成功しました!もう1つ:トークンを取得するリクエストには、スコープではなくリソースが必要です。 – Sybic2001

関連する問題