2017-04-05 6 views
0

非常に似ている他の投稿を見ましたが、本当の答えは見つかりません。何人かは「来ている」と言われています。Microsoft Graphユーザーのカレンダーにアクセスできない403

O365の管理者資格情報で認証し、カレンダー情報を取得しようとしています。スコープにはCalendars.ReadWriteがあります(これはApp-OnlyとDelegateに該当します)。ErrorAccessDenied、 "アクセスが拒否されました。資格情報を確認してやり直してください"

ビューでは、リクエストでユーザー/ {id}を送信でき、すべてのユーザーをリストしたときにIDが戻ってきたことがわかります。もちろん私が私のものを使うなら、それはうまくいく。

本当にApp-Onlyスコープと同じスコープ名のDelegateスコープがある場合は、どのように指定しますか?

権限があるので、管理者ユーザーにはO365で指定する必要がありますか? O365でそのアカウントを持つユーザーを削除または作成することができますので、必要なものを持っている必要があります。

ありがとう

答えて

0

したがって、App-Onlyはわずかに異なるフローを持っています。

まず、 "https://login.microsoftonline.com/common/oauth2/v2.0/authorize"でユーザーを認証する代わりに、 "https://login.microsoftonline.com/common/adminconsent"で認証します。

第2に、同じパラメータから「スコープ」を引いた値を渡します。有効範囲は、apps.dev.microsoft.comで登録したアプリケーションで定義されたアプリケーション権限によって決まります。

第3に、コールバックを受け取ったときに、アクセスとリフレッシュトークンを取得および取得するための「コード」はありません。代わりに、 "テナント"プロパティと "admin_consent"プロパティが表示されます。 "admin_consent"はあなたに権利があるかどうかを教えてくれます。

第4に、アクセストークンを要求するときに「スコープ」または「コード」パラメータを指定しないで、値「https://graph.microsoft.com」の「リソース」パラメータを指定します。

最後に、トークンを取得するために連絡するURLは、「https://login.microsoftonline.com/common/oauth2/v2.0/token」から「https://login.microsoftonline.com/ {tenant}/oauth2/token」に変更されます。{tenant}は返された値になります。

URLに「v2.0」がないことに注意してください。それはタイプミスではありません。パスからそれを削除しないと、無効または欠落した "scope"パラメータに関するエラーが発生します。

正常にアクセスと更新トークンが返されると、フローは通常の委任アクセスに従っているようです。

ここでは、Microsoftが私に与えた2つのリンクを紹介し、これを理解する手助けをしています。

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-scopes#using-the-admin-consent-endpoint

https://developer.microsoft.com/en-us/graph/docs/authorization/app_only

(Microsoftのジェフにビッグおかげで)

関連する問題