2016-10-08 18 views
0

外部組織のADユーザーが予定をOffice 365カレンダーイベントに同期させるSaaSアプリケーションを開発しています。Microsoft Graph Apiを使用したAzure Active DirectoryユーザーとSaaSアプリケーション

Adminユーザーシナリオ:アプリへ

  1. 管理輸入すべてのADユーザーを。
  2. このアプリケーションは、管理者をMicrosoftログインにリダイレクトして、アクセス許可を要求します。
  3. 管理者は、アプリがユーザーのカレンダーにアクセスできるようにします。

ノーマルusersScenario:アプリに

  1. ユーザーがログイン。
  2. ユーザーは、予定を作成してOffice 365カレンダーに同期します(権限を要求せずに)。

私はMicrosoftグラフAPIに次のエンドポイントを使用しています:

Authority = "https://login.microsoftonline.com/common/oauth2/authorize" 
Resource = "https://graph.microsoft.com/" 

私は通常、ユーザーが自分のMicrosoftデータへのアクセス権を与えたいと思った場合、私は彼らに「共通」のテナントを変更する必要がありますテナントID?

私の他の質問は、管理者の同意が自分のシナリオに基づいてどのように機能するのですか?

+0

「ADユーザー」と言えば、Azure AD(クラウド)またはWindows Server AD(オンプレミス)を指していますか。 –

+0

Azure Active Directory(クラウド) – h3n

答えて

1

まず、すべてのユーザーをアプリにインポートすることをおすすめします。あなたが実際に必要とするユーザーをプロビジョニングするのは、サインイン時に「ちょうどいい時間に」することです。あなたのアプリケーションにテナント内の他のユーザーをリストすることが有用なシナリオがある場合(たとえば、「人選」)、オンデマンドでMicrosoft Graph APIを使用できます。

次に、質問の1つに答えます。いいえ、Authorityエンドポイントをテナント固有エンドポイントに切り替えるべきではありません。 commonエンドポイントを使用してください。これにより、どのテナントのユーザーでも認証できます。

認証要求中にprompt=admin_consentクエリパラメータを使用すると、管理者同意を明示的に要求できます。ユーザーのアプリケーションがテナント管理者であるかどうかを確認するために、アプリケーションが通常のサインインを実行してから、ユーザーがサインインした後にMicrosoft Graph APIを使用して確認します。一致している場合は、再認証するようにリダイレクトできますが、今度はprompt=admin_consentオプションを使用します。また、最初からprompt=admin_consentを使用するアプリケーションに「サインアップ」フローを持たせることもできます(非管理者はAzure ADから理解できないエラーが発生するため、テナント管理者だけがそのことを行うことができるという注意が必要です)。 )。

関連する問題