次の方法で共有


アプリケーションにアプリ ロールを追加してトークンで受け取る

ロールベースのアクセス制御 (RBAC) は、アプリケーションにおいて承認を実施する一般的なメカニズムです。 RBAC を使用すると、管理者は特定のユーザーまたはグループに対してではなく、ロールに対してアクセス許可を付与できます。 その後、管理者はロールをさまざまなユーザーやグループに割り当てて、コンテンツや機能にだれがアクセスできるかを制御できます。

RBAC をアプリケーション ロールおよびロール要求と一緒に使用すると、開発者はあまり手間をかけずにアプリでの承認を確実に行うことができます。

もう 1 つの方法は、GitHub の active-directory-aspnetcore-webapp-openidconnect-v2 コード サンプルに示されているように、Microsoft Entra グループとグループ要求を使用することです。 Microsoft Entra グループとアプリケーション ロールは相互に排他的ではありません。一緒に使うことで、さらにきめ細かいアクセス制御を提供できます。

アプリケーションのロールを宣言する

アプリの役割は、アプリ登録プロセス中に Microsoft Entra 管理センターを使用して定義します。 アプリ ロールは、サービス、アプリ、または API を表すアプリケーションの登録で定義します。 ユーザーがアプリケーションにサインインすると、Microsoft Entra ID は、ユーザーまたはサービス プリンシパルが付与された各ロールに対して roles 要求を出力します。これは、 要求ベースの承認を実装するために使用できます。 アプリ ロールは、 ユーザーまたはユーザーのグループに割り当てることができます。 アプリ ロールは、別のアプリケーションのサービス プリンシパルまたは マネージド ID のサービス プリンシパルに割り当てることもできます。

現時点、サービス プリンシパルをグループに追加してから、そのグループにアプリ ロールを割り当てる場合、Microsoft Entra ID では、そこで発行されるトークンに roles 要求は追加されません。

アプリ ロールは、[Microsoft Entra 管理センター] のアプリ ロール UI を使用して宣言されます。

追加するロールの数は、Microsoft Entra ID によって適用されるアプリケーション マニフェストの制限に照らしてカウントされます。 これらの制限の詳細については、Microsoft Entra アプリ マニフェスト リファレンス「マニフェストの制限」セクションを参照してください。

アプリ ロール UI

[Microsoft Entra 管理センター] のユーザー インターフェイスを使用してアプリ ロールを作成するには次の手順に従ってください:

  1. Microsoft Entra 管理センターに、少なくともクラウド アプリケーション管理者としてサインインします。

  2. 複数のテナントにアクセスできる場合は、上部のメニューの [設定] アイコン を使用して、[ ディレクトリとサブスクリプション ] メニューからアプリの登録を含むテナントに切り替えます。

  3. Entra ID>App 登録に移動し、アプリ ロールを定義するアプリケーションを選択します。

  4. [管理] で [ アプリ ロール] を選択し、[ アプリ ロールの作成] を選択します。

    Azure portal のアプリ登録の [アプリ ロール] ウィンドウ

  5. [ アプリ ロールの作成 ] ウィンドウで、ロールの設定を入力します。 図の下の表では、各設定とそのパラメーターについて説明します。

    Azure portal のアプリ登録におけるアプリ ロールの作成時のコンテキスト ウィンドウ

    フィールド 説明
    表示名 管理者の同意やアプリの割り当て時に表示されるアプリのロールの表示名です。 この値にはスペースを含めることができます。 Survey Writer
    許可されるメンバー型 このアプリのロールをユーザー、アプリケーション、またはその両方に割り当てることができるかどうかを指定します。

    で使用可能な場合、アプリのロールは、アプリ登録の 管理 セクションにある [API アクセス許可] [アクセス許可の追加 ] [My APIs ] [API 選択 ] [アプリケーションのアクセス許可] として表示されます。
    Users/Groups
    価値 アプリケーション側でトークンに想定するロール要求の値を指定します。 この値は、アプリケーションのコードで参照される文字列と正確に一致する必要があります。 値にスペースを含めることはできません。 Survey.Create
    説明 管理者のアプリの割り当てと同意エクスペリエンスの間に表示されるアプリのロールの詳細な説明。 Writers can create surveys.
    このアプリ ロールを有効にしますか? アプリ ロールを有効にするかどうかを指定します。 アプリのロールを削除するには、このチェックボックスをオフにして、変更を適用してから削除操作を試行してください。 この設定は、アプリ ロールの使用状況と可用性を制御します。アプリ ロールは完全に削除するのではなく、一時的または永続的に無効にできます。 チェック
  6. [ 適用] を選択して変更を保存します。

アプリ ロールが [有効] に設定されている場合、割り当てられているユーザー、アプリケーション、またはグループには、トークンにアプリ ロールが含まれます。 これらのトークンは、アプリで API を呼び出す場合はアクセス トークンであり、アプリがユーザーのサインインを行う場合は ID トークンになります。

アプリ ロールが [無効] に設定されると、非アクティブになり、割り当てできなくなります。 ただし、ユーザー、グループ、アプリケーションへの現在のアプリ ロールの割り当ては残り、アプリ ロールは引き続きトークンを渡します。 ユーザー、グループ、またはアプリケーションからアプリ ロールを削除して、アプリ ロールもトークンから削除されるようにします。

アプリケーションの所有者を割り当てる

アプリケーションにアプリ ロールを割り当てる前に、自分をアプリケーション所有者として割り当てる必要があります。

  1. アプリの登録で、[ 管理] で [ 所有者] を選択し、[ 所有者の追加] を選択します。
  2. 新しいウィンドウで、アプリケーションに割り当てる所有者を見つけて選びます。 選択した所有者が右側のパネルに表示されます。 完了したら、[ 選択 ] で確認し、アプリの所有者が所有者の一覧に表示されます。

必ず、API アプリケーションと、アクセス許可を追加するアプリケーションの両方に所有者を設定してください。そうしなければ、API のアクセス許可を要求するときに API が一覧表示されません。

アプリケーションへのアプリ ロールの割り当て

アプリケーションにアプリ ロールを追加した後は、Microsoft Entra 管理センターを使用するか、Microsoft Graph を使用してプログラムでクライアント アプリにアプリ ロールを割り当てることができます。 アプリケーションへのアプリ ロールの割り当ては、 ユーザーへのロールの割り当てと混同しないでください。

アプリケーションにアプリ ロールを割り当てると、 アプリケーションのアクセス許可が作成されます。 通常、アプリケーションのアクセス許可は、認証および承認された API 呼び出しをユーザーによる操作なしで行う必要がある、デーモン アプリまたはバックエンド サービスによって使用されます。

[Microsoft Entra 管理センター] を使用して、アプリケーションにアプリロールを割り当てるには、次の手順に従ってください。

  1. Microsoft Entra 管理センターに、少なくともクラウド アプリケーション管理者としてサインインします。
  2. Entra ID>App 登録に移動し、[すべてのアプリケーション] を選択します。
  3. [すべてのアプリケーション] を選択して、すべてのアプリケーションの一覧を表示します。 アプリケーションが一覧に表示されない場合は、[ すべてのアプリケーション ] リストの上部にあるフィルターを使用して一覧を制限するか、一覧を下にスクロールしてアプリケーションを見つけます。
  4. アプリ ロールを割り当てるアプリケーションを選択します。
  5. [API のアクセス許可] を選択>アクセス許可を追加します
  6. [ マイ API ] タブを選択し、アプリ ロールを定義したアプリを選択します。
  7. [ アクセス許可] で、割り当てるロールを選択します。
  8. [ アクセス許可の追加] ボタンを選択して、ロールの追加を完了します。

新しく追加されたロールは、アプリ登録の API アクセス許可 ウィンドウに表示されます。

これらは委任された アクセス許可ではなくアプリケーションのアクセス許可であるため、管理者はアプリケーションに割り当てられたアプリ ロールを使用するための同意を付与する必要があります。

  1. アプリ登録の [API アクセス許可] ウィンドウで、[<テナント名に管理者の同意を付与する>を選択します。
  2. 要求されたアクセス許可の同意を付与するように求められたら、[ はい ] を選択します。

[状態] 列には、<テナント名に対する同意が付与>が反映されている必要があります。

アプリ ロールの使用シナリオ

アプリケーション シナリオでユーザーをサインインさせるアプリ ロール ビジネス ロジックを実装する場合は、まずアプリ の登録でアプリ ロールを定義します。 次に、管理者は、[ エンタープライズ アプリケーション ] ウィンドウでユーザーとグループに割り当てます。 シナリオに応じて、これらの割り当てられたアプリ ロールは、アプリケーションに対して発行されるさまざまなトークンに含められます。 たとえば、ユーザーをサインインさせるアプリの場合は、ロール要求が ID トークンに含められます。 アプリケーションが API を呼び出すと、ロール要求がアクセス トークンに含められます。

アプリ呼び出し API のシナリオでアプリ ロールのビジネス ロジックを実装している場合は、2 つのアプリ登録があります。 1 番目のアプリ登録はアプリ用であり、2 番目のアプリ登録は API 用です。 この場合は、アプリ ロールを定義して、API のアプリ登録でユーザーまたはグループに割り当てます。 ユーザーがアプリを使用して認証し、アクセス トークンを要求して API が呼び出されると、ロール要求がトークンに含められます。 次の手順は、API が呼び出されたときにこれらのロールを確認するコードを Web API に追加することです。

Web API に承認を追加する方法については、「 保護された Web API: スコープとアプリ ロールを確認する」を参照してください。

アプリ ロールとグループ

承認にはアプリ ロールまたはグループを使用できますが、両者の間の重要な違いは、実際のシナリオでどちらを使用するかの決定に影響する可能性があります。

アプリケーションの役割 グループ
アプリケーションに固有のものであり、アプリの登録で定義されます。 これらはアプリケーションと共に移動します。 これらは、アプリケーション固有ではなく、Microsoft Entra テナント固有です。
アプリ ロールは、アプリの登録が削除されると削除されます。 アプリが削除されても、グループはそのまま残ります。
roles 要求で提供されます。 groups 要求で提供されます。

開発者はアプリ ロールを使用して、ユーザーがアプリにサインインできるか、Web API のアクセス トークンをアプリで取得できるかを制御できます。 このセキュリティ制御をグループにまで拡張するために、開発者と管理者は、セキュリティ グループをアプリ ロールに割り当てることもできます。

開発者がアプリ自体に承認のパラメーターを記述して制御する必要がある場合は、アプリ ロールの使用が好まれます。 たとえば、承認にグループを使用するアプリは、グループ ID と名前の両方が異なる可能性があるため、次のテナントで中断されます。 アプリ ロールを使用するアプリは安全なままです。 実際、SaaS アプリが複数のテナントにプロビジョニングされることが許可されるため、同じ理由で、SaaS アプリではアプリ ロールにグループがよく割り当てられます。

ユーザーとグループを Microsoft Entra のロールに割り当てる

アプリケーションにアプリ ロールを追加したら、ユーザーとグループを Microsoft Entra ロールに割り当てることができます。 ユーザーとグループをロールに割り当てるには、ポータルの UI を使用するか、 Microsoft Graph を使用してプログラムを使用します。 さまざまなロールに割り当てられたユーザーがアプリケーションにサインインすると、割り当てられたロールが roles 要求でトークンに付与されます。

[Microsoft Entra 管理センター] を使用して、ユーザーとグループをロールに割り当てるには、次の手順に従ってください。

  1. Microsoft Entra 管理センターに、少なくともクラウド アプリケーション管理者としてサインインします。
  2. 複数のテナントにアクセスできる場合は、上部のメニューの [設定] アイコン を使用して、[ ディレクトリとサブスクリプション ] メニューからアプリの登録を含むテナントに切り替えます。
  3. Entra ID>エンタープライズ アプリケーションを確認します。
  4. [すべてのアプリケーション] を選択して、すべてのアプリケーションの一覧を表示します。 アプリケーションが一覧に表示されない場合は、[ すべてのアプリケーション ] リストの上部にあるフィルターを使用して一覧を制限するか、一覧を下にスクロールしてアプリケーションを見つけます。
  5. ユーザーまたはグループをロールに割り当てるアプリケーションを選択します。
  6. [ 管理] で、[ ユーザーとグループ] を選択します。
  7. [ ユーザーの追加] を選択して 、[割り当ての追加] ウィンドウを開きます。
  8. [割り当ての追加] ウィンドウから [ユーザーとグループ] セレクターを選択します。 ユーザーとセキュリティ グループの一覧が表示されます。 特定のユーザーまたはグループを検索することや、一覧に表示される複数のユーザーやグループを選択することができます。 [選択] ボタンを 選択 して続行します。
  9. [割り当ての追加] ウィンドウで [ロールの選択] を選択します。 アプリケーションに対して定義されているすべてのロールが表示されます。
  10. ロールを選択し、[選択] ボタンを 選択 します。
  11. [ 割り当て ] ボタンを選択して、アプリへのユーザーとグループの割り当てを完了します。

追加したユーザーとグループが [ ユーザーとグループ ] の一覧に表示されることを確認します。

次のステップ

アプリ ロールの詳細については、次のリソースを参照してください。