2016-05-23 22 views
1

私は、Office 365アカウントと通信するために私のマルチテナントsaas Webアプリケーションを認証しようとしています。まあ、私のアプリは権限のために管理者の同意が必要だと思うので、実装する必要があります。Office365 APIの管理者同意とユーザー同意の実装方法

また、ユーザーの同意も必要です。管理者が同意した後、彼は自分のアカウントにアクセスして[承認]をクリックすることができます。

どうすれば実装できますか?すでに承認フローが用意されていますが、ユーザーごとに承認するだけです(管理者同意の考えは当時はまったく不明でした)。管理者以外のユーザーが自分のアカウントを認証しようとすると、「この操作は管理者のみが実行できます」というエラーが表示されます。管理者がこれを通過すると、それが許可され、管理者が管理者の同意を得たときには、依然として許可されます。通常のユーザーは引き続きそのエラーを受け取ります。

  • Calendars.Read
  • Calendars.ReadWrite
  • Contacts.ReadWrite
  • Mail.ReadWrite
  • Mail.Send
  • タスク:

    これらは私のアプリが要求している権限です.ReadWrite

また、私はOAuth 2.0の持つ唯一の基本的よく知っていることを助けていません

user_id 
access_token 
expires_on 
resource 
refresh_token 
scope 
id_token 

これは、我々はそれを保存しているデータです。

私は記事、フォーラムの質問、ヘルプガイド、ドキュメントを数週間流してきました。助けて。

更新:データにis_adminフラグを追加する必要がありますか?管理者が同意すると、私は上記のフィールドのすべてをis_admin => 1と一緒に保存します。したがって、標準ユーザーが同意オフィス365に行くと、私のアプリは自分のアカウントにoauthアクセストークン(is_admin)があるかどうかをチェックします。これはアカウント管理者の許可を受けているため、認証を進めることができます。

暖かいですか? URLで

星座:それを修正

https://login.microsoftonline.com/common/oauth2/authorize? 
response_type=code 
&client_id={my_client_id} 
&redirect_uri=https%3A%2F%2Fapp.example.com%2Fintegrations%2Foffice-auth&state=V6diTW2TaHl1Zpawg1AFub7fWtKfGnyl1464023103 
&resource=https%3A%2F%2Foutlook.office365.com%2F 
&prompt=consent 
+0

これらのアクセス許可には管理者の同意が必要ないため、これを行う必要はありません。ログインのURLはどのようなものですか? –

+0

ログインしていただきありがとうございます。それでv1の認証エンドポイントを使用しているので、あなたの権限はすべてアプリ登録の一部として事前に指定されています。また、Active Directoryに指定されているアクセス権も持っていますか?管理者同意が必要なものもあります。 –

+0

私は 'Directory.AccessAsUser.All Directory.Read.All Directory.ReadWrite.All'というアクセス権を持っていましたが、数時間前にこれを回避するために削除しました。おそらく、何かが古くなっているのでしょうか? –

答えて

0

。これは、委任された権限とは対照的に、Azureのアプリケーション権限でした。それには、「すべてのメールボックスを読み書きする」というものがありましたが、これは基本的に組織内のすべてのユーザーにアクセスするためのアクセス許可を与えていました。

これを削除すると、ユーザー認証が機能し、管理者の同意も必要ありません。

関連する問題