私は、Office 365アカウントと通信するために私のマルチテナントsaas Webアプリケーションを認証しようとしています。まあ、私のアプリは権限のために管理者の同意が必要だと思うので、実装する必要があります。Office365 APIの管理者同意とユーザー同意の実装方法
また、ユーザーの同意も必要です。管理者が同意した後、彼は自分のアカウントにアクセスして[承認]をクリックすることができます。
どうすれば実装できますか?すでに承認フローが用意されていますが、ユーザーごとに承認するだけです(管理者同意の考えは当時はまったく不明でした)。管理者以外のユーザーが自分のアカウントを認証しようとすると、「この操作は管理者のみが実行できます」というエラーが表示されます。管理者がこれを通過すると、それが許可され、管理者が管理者の同意を得たときには、依然として許可されます。通常のユーザーは引き続きそのエラーを受け取ります。
- Calendars.Read
- Calendars.ReadWrite
- Contacts.ReadWrite
- Mail.ReadWrite
- Mail.Send
- タスク:
これらは私のアプリが要求している権限です.ReadWrite
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
これらのアクセス許可には管理者の同意が必要ないため、これを行う必要はありません。ログインのURLはどのようなものですか? –
ログインしていただきありがとうございます。それでv1の認証エンドポイントを使用しているので、あなたの権限はすべてアプリ登録の一部として事前に指定されています。また、Active Directoryに指定されているアクセス権も持っていますか?管理者同意が必要なものもあります。 –
私は 'Directory.AccessAsUser.All Directory.Read.All Directory.ReadWrite.All'というアクセス権を持っていましたが、数時間前にこれを回避するために削除しました。おそらく、何かが古くなっているのでしょうか? –