一部のアクセス許可は、テナント内で付与する前に管理者の同意が必要です。 管理者の同意エンドポイントを使用して、テナント全体にアクセス許可を付与することもできます。
推奨:ユーザーをアプリにサインインさせる
通常、管理者の同意エンドポイントを使用するアプリケーションを構築する場合は、アプリ側に管理者がアプリのアクセス許可を承認できるページやビューが必要です。 このページは、アプリのサインアップのフローの一部、アプリの設定の一部、または専用の "接続" フローにすることができます。 多くの場合、ユーザーが職場または学校の Microsoft アカウントでサインインした後にのみ、アプリがこの "接続" ビューを表示することが合理的です。
ユーザーをアプリにサインインさせる場合、管理者に必要なアクセス許可の承認を求める前に、管理者が所属する組織を特定できます。 絶対に必要というわけではないものの、組織ユーザーにとってより直感的なエクスペリエンスを作成するのに役立ちます。
ディレクトリ管理者にアクセス許可を要求する
組織の管理者にアクセス許可を要求する準備ができたら、ユーザーを Microsoft ID プラットフォーム 管理者の同意エンドポイントにリダイレクトできます。
https://login.microsoftonline.com/{tenant}/v2.0/adminconsent
?client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&scope=https://graph.microsoft.com/Calendars.Read https://graph.microsoft.com/Mail.Send
&redirect_uri=http://localhost/myapp/permissions
&state=12345
パラメーター | 条件 | 説明 |
---|---|---|
tenant |
必須 | アクセス許可を要求するディレクトリ テナント。 GUID またはフレンドリ名形式で指定することも、例に示すように organizations で一般的に参照することもできます。 個人アカウントはテナントのコンテキストを除いて管理者の同意を提供できないため、"共通" を使用しないでください。 テナントを管理する個人用アカウントとの最善の互換性を確保するには、可能であればテナント ID を使用します。 |
client_id |
必須 | [Microsoft Entra 管理センター - アプリの登録] エクスペリエンスからアプリに割り当てられたアプリケーション (クライアント) ID。 |
redirect_uri |
必須 | アプリが処理するために応答を送信するリダイレクト URI。 アプリケーション登録ポータルで登録したリダイレクト URI のいずれかと完全に一致させる必要があります。 |
state |
推奨 | 要求に含まれ、かつトークンの応答として返される値。 任意のコンテンツの文字列を指定することができます。 この状態は、認証要求の前にアプリ内でユーザーの状態 (表示中のページやビューなど) に関する情報をエンコードする目的に使用します。 |
scope |
必須 | アプリケーションによって要求されるアクセス許可のセットを定義します。 静的スコープ ( /.default を使用) または動的スコープのいずれかを指定できます。 これには、OIDC スコープ (openid 、 profile 、 email ) を含めることができます。 |
現在 Microsoft Entra ID では、テナント管理者がサインインして、要求を完了する必要があります。 管理者は、 scope
パラメーターで要求したすべてのアクセス許可を承認するように求められます。 静的 (/.default
) 値を使用した場合、v1.0 管理者の同意エンドポイントと同様に機能し、必要なアクセス許可 (ユーザーとアプリの両方) で見つかったすべてのスコープに対して同意を要求します。 アプリのアクセス許可を要求するには、 /.default
値を使用する必要があります。
/.default
を使用するときに管理者の同意画面で常に特定のアクセス許可を管理者に表示させたくない場合は、必要なアクセス許可セクションにアクセス許可を配置しないことをお勧めします。 代わりに、動的同意を使用して、 /.default
を使用するのではなく、実行時に同意画面に表示するアクセス許可を追加できます。
成功応答
管理者がアプリのアクセス許可を承認した場合、成功した応答は次のようになります。
http://localhost/myapp/permissions
?admin_consent=True
&tenant=aaaabbbb-0000-cccc-1111-dddd2222eeee
&scope=https://graph.microsoft.com/Calendars.Read https://graph.microsoft.com/Mail.Send
&state=12345
パラメーター | 説明 |
---|---|
tenant |
アプリケーションに要求されたアクセス許可を GUID 形式で付与したディレクトリ テナント。 |
state |
トークン応答にも返される要求に含まれる値。 任意のコンテンツの文字列を指定することができます。 状態は、認証要求が発生する前のユーザーの状態 (ページやビューなど) に関する情報をエンコードするために使用されます。 |
scope |
アプリケーションに対するアクセス権が付与されたアクセス許可のセット。 |
admin_consent |
True に設定されます。 |
Warnung
ユーザーの認証または承認には、 パラメーターのtenant
値を使用しないでください。 テナント ID の値は、アプリへの応答を偽装するために、不適切なアクターによって更新および送信できます。 これにより、アプリケーションがセキュリティ インシデントに公開される可能性があります。
エラー応答
http://localhost/myapp/permissions
?admin_consent=True
&error=consent_required
&error_description=AADSTS65004%3a+The+resource+owner+or+authorization+server+denied+the+request.%0d%0aTrace+ID%3a+0000aaaa-11bb-cccc-dd22-eeeeee333333%0d%0aCorrelation+ID%3a+8478d534-5b2c-4325-8c2c-51395c342c89%0d%0aTimestamp%3a+2019-09-24+18%3a34%3a26Z
&state=12345
正常な応答に表示されるパラメーターに追加すると、エラー パラメーターは次のようになります。
パラメーター | 説明 |
---|---|
error |
発生したエラーの種類を分類したりエラーに対処したりする際に使用するエラー コード文字列。 |
error_description |
開発者がエラーの根本原因を特定するのに役立つ特定のエラー メッセージ。 |
state |
トークン応答にも返される要求に含まれる値。 任意のコンテンツの文字列を指定することができます。 状態は、認証要求が発生する前のユーザーの状態 (ページやビューなど) に関する情報をエンコードするために使用されます。 |
admin_consent |
この応答が管理者の同意フローで発生したことを示す True に設定されます。 |
次のステップ
- アプリをマルチテナントに変換する方法を確認する
- 承認コード付与フロー中に OAuth 2.0 プロトコル 層で同意がどのようにサポートされるかについて説明します。
- マルチテナント アプリケーションで同意フレームワークを使用して "ユーザー" と "管理者" の同意を実装し、より高度な多層アプリケーション パターンをサポートする方法について説明します。
- Microsoft Entra アプリケーションの同意エクスペリエンスについて