このハウツー ガイドでは、Microsoft ID プラットフォームに登録されているクライアント アプリに、独自の Web API へのスコープ付きアクセス許可ベースのアクセスを提供します。 また、クライアント アプリに Microsoft Graph へのアクセスを提供します。
クライアント アプリの登録時に Web API のスコープを指定することにより、それらのスコープを含むアクセス トークンを Microsoft ID プラットフォームからクライアント アプリに取得できます。 次にそのコード内で、Web API により、アクセス トークンにあるスコープに基づいて、リソースに対するアクセス許可ベースのアクセスを提供できます。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 アカウントを無料で作成します。
- クイック スタートの完了: アプリケーションを登録する
- クイック スタートの完了: Web API を公開するようにアプリケーションを構成する
Web API にアクセスするためのアクセス許可を追加する
クライアント アプリケーションが Web API にアクセスできるようにするには、Web API にアクセスするためのアクセス許可をクライアント アプリケーションに追加する必要があります。 同様に、Web API で、クライアント アプリケーションのアクセス スコープとロールを構成する必要があります。
クライアント アプリケーションに独自の Web API へのアクセスを許可するには、次の 2 つのアプリ登録が必要です。
- クライアント アプリの登録
- 公開されたスコープを使用した Web API の登録
この図は、2 つのアプリ登録が相互にどのように関連しているかを示しています。クライアント アプリのアクセス許可の種類が異なり、Web API では、クライアント アプリケーションがアクセスできるスコープが異なります。 このセクションでは、クライアント アプリの登録にアクセス許可を追加します。
クライアント アプリと Web API の両方を登録し、スコープを作成して API を公開したら、次の手順に従って、API に対するクライアントのアクセス許可を構成できます。
Microsoft Entra 管理センターに、少なくともクラウド アプリケーション管理者としてサインインします。
複数のテナントにアクセスできる場合は、上部のメニューの [設定] アイコン
を使用して、[ ディレクトリとサブスクリプション ] メニューからアプリの登録を含むテナントに切り替えます。
Entra ID>App 登録に移動し、(Web API ではなく) クライアント アプリケーションを選択します。
[API のアクセス許可]、[アクセス許可の追加] の順に選択し、サイドバーで [マイ API] を選択します。
前提条件の一部として登録した Web API を選択し、[ 委任されたアクセス許可] を選択します。
委任されたアクセス許可 は、サインインしているユーザーとして Web API にアクセスし、次の手順で選択したアクセス許可にアクセスを制限する必要があるクライアント アプリに適しています。 この例 では、[委任されたアクセス許可 ] を選択したままにします。
アプリケーションのアクセス許可 は、サインインまたは同意のためにユーザーが操作することなく、Web API に自身でアクセスする必要があるサービスタイプまたはデーモンタイプのアプリケーション用です。 Web API のアプリケーション ロールを定義していない限り、このオプションは無効になります。
[ アクセス許可の選択] で、Web API に対して定義したスコープを持つリソースを展開し、サインインしているユーザーに代わってクライアント アプリが持つ必要があるアクセス許可を選択します。
- 前のクイック スタートで指定したスコープ名の例を使用した場合は、Employees.Read.All と
Employees.Write.All
が表示されます。
- 前のクイック スタートで指定したスコープ名の例を使用した場合は、Employees.Read.All と
前提条件の作業の完了時に作成したアクセス許可を選択します (例:
Employees.Read.All
)。[ アクセス許可の追加] を選択してプロセスを完了します。
API にアクセス許可を追加すると、選択したアクセス許可が [構成されたアクセス許可] の下に表示されます。 次の図は、クライアント アプリの登録に追加された Employees.Read.All の委任されたアクセス許可の例を示しています。
Microsoft Graph API の User.Read アクセス許可にも気付く場合があります。 このアクセス許可は、Azure portal にアプリを登録すると自動的に追加されます。
Microsoft Graph にアクセスするためのアクセス許可を追加する
アプリケーションでは、サインインしたユーザーの代わりに独自の Web API にアクセスすることに加えて、Microsoft Graph に格納されているユーザーの (またはその他の) データにアクセスしたり、そのデータを変更したりすることが必要な場合があります。 または、サービスまたはデーモン アプリがそれ自体として Microsoft Graph にアクセスし、ユーザーによる操作なしで操作を実行することが必要な場合があります。
Microsoft Graph への委任されたアクセス許可
Microsoft Graph に対する委任されたアクセス許可を構成することで、クライアント アプリケーションがログインしたユーザーの代わりに操作を実行できるようになり、たとえば、電子メールを読んだり、プロファイルを変更したりできます。 既定では、クライアント アプリのユーザーは、構成済みの委任されたアクセス許可への同意をログイン時に求められます。
クライアント アプリケーションの [概要] ページで、[API のアクセス許可] を選択します>アクセス許可の追加>Microsoft Graph
[ 委任されたアクセス許可] を選択します。 Microsoft Graph には多くのアクセス許可が公開されており、最もよく使用されるものが一覧の一番上に表示されます。
[ アクセス許可の選択] で、次のアクセス許可を選択します。
権限 説明 email
ユーザーの電子メール アドレスの表示 offline_access
アクセス権を付与したデータへのアクセスの管理 openid
ユーザーをログインさせる profile
ユーザーの基本プロファイルの表示 [ アクセス許可の追加] を選択してプロセスを完了します。
アクセス許可を構成すると常に、アプリのユーザーは、アプリが彼らに代わってリソース API にアクセスできるようにするための同意をサインイン時に求められます。
管理者は、 すべての ユーザーに代わって同意を付与して、ユーザーに同意を求めないようにすることもできます。 管理者の同意については、この記事の「 API のアクセス許可と管理者の同意の詳細 」セクションで後述します。
Microsoft Graph へのアプリケーションのアクセス許可
ユーザーによる操作や同意なしにそれ自体として認証される必要があるアプリケーション用に、アプリケーションのアクセス許可を構成します。 アプリケーションのアクセス許可は、通常、API に "ヘッドレス" 方式でアクセスするバックグラウンド サービスやデーモン アプリ、および別の (ダウンストリーム) API にアクセスする Web API によって使用されます。
次の手順では、例として Microsoft Graph の Files.Read.All アクセス許可にアクセス許可を付与します。
- Microsoft Entra 管理センターに、少なくともクラウド アプリケーション管理者としてサインインします。
- 複数のテナントにアクセスできる場合は、上部のメニューの [設定] アイコン
を使用して、[ ディレクトリとサブスクリプション ] メニューからアプリの登録を含むテナントに切り替えます。
- Entra ID>App 登録に移動し、クライアント アプリケーションを選択します。
- API のアクセス許可>アクセス許可の追加>Microsoft Graph>アプリケーションのアクセス許可。
- Microsoft Graph によって公開されるすべてのアクセス許可は、[ アクセス許可の選択] の下に表示されます。
- アプリケーションに付与する 1 つ以上のアクセス許可を選択します。 たとえば、組織内のファイルをスキャンし、特定のファイルの種類または名前について警告するデーモン アプリがあるとします。 [ アクセス許可の選択] で [ ファイル] を展開し、
Files.Read.All
アクセス許可を選択します。 - [ アクセス許可の追加] を選択します。
- Microsoft Graph の Files.Read.All アクセス許可など、一部のアクセス許可には管理者の同意が必要です。 管理者の同意を付与するには、[ 管理者の同意の付与 ] ボタンを選択します。このボタンについては、後の「 管理者の同意」セクション で説明します。
クライアントの資格情報を構成する
アプリケーションのアクセス許可を使用するアプリは、独自の資格情報を使用してそれ自体として認証を行い、ユーザーによる操作を必要としません。 アプリケーション (または API) がアプリケーションのアクセス許可を使用して、Microsoft Graph、独自の Web API、または別の API にアクセスできるようにするには、そのクライアント アプリの資格情報を構成する必要があります。
アプリの資格情報の構成の詳細については、「クイック スタート: Microsoft ID プラットフォームにアプリケーションを登録する」の「資格情報の追加」セクションを参照してください。
API のアクセス許可と管理者の同意に関する詳細
アプリ登録の [API アクセス許可 ] ウィンドウには、[ 構成済みのアクセス許可 ] テーブルと [管理者の同意] ボタンが含まれています。このボタンについては、次のセクションで説明します。
構成されたアクセス許可
[API のアクセス許可] ウィンドウの [構成済みのアクセス許可] テーブルには、アプリケーションが基本的な操作に必要なアクセス許可の一覧 (必要なリソース アクセス (RRA) の一覧) が表示されます。 ユーザーまたは管理者は、アプリを使用する前に、これらのアクセス許可に同意する必要があります。 その他のオプションのアクセス許可は、後から (動的な同意を使用して) 実行時に要求できます。
これは、ユーザーがアプリに関して同意する必要がある最小限のアクセス許可の一覧です。 他にもある可能性がありますが、これらは常に必要です。 セキュリティのため、およびユーザーと管理者がアプリをより快適に使用できるようにするため、必要のないことは要求しないでください。
このテーブルに表示されるアクセス許可を追加または削除するには、前述の手順を使用します。 管理者は、テーブルに表示される API のアクセス許可の完全なセットに対して管理者の同意を付与し、個々のアクセス許可の同意を取り消すことができます。
管理者の同意のボタン
[{your tenant} に管理者の同意を付与する] ボタンを使用すると、管理者はアプリケーション用に構成されたアクセス許可に管理者の同意を付与できます。 このボタンを選択すると、同意アクションの確認を求めるダイアログが表示されます。
同意を付与すると、管理者の同意が必要なアクセス許可が、同意付与済みとして表示されます。
管理者でない場合、またはアプリケーションに対してアクセス許可が構成されていない場合は、[管理者の 同意の付与 ] ボタンが 無効になります 。 アクセス許可が付与されていてもまだ構成されていない場合、管理者の同意ボタンをクリックすると、これらのアクセス許可を処理するように求められます。 構成されたアクセス許可にそれらを追加するか、それらを削除することができます。
アプリケーションのアクセス許可を削除する
アプリケーションに必要以上に多くのアクセス許可を付与しないことが重要です。 アプリケーションでアクセス許可に対する管理者の同意を取り消すには、次のようにします。
- アプリケーションに移動し、 API のアクセス許可を選択します。
- [ 構成済みのアクセス許可] で、削除するアクセス許可の横にある 3 つのドットを選択し、[ 管理者の同意の取り消し] を選択します。
- 表示されるポップアップで、[ はい、削除 ] を選択して、アクセス許可の管理者の同意を取り消します。
関連するコンテンツ
このシリーズの次のクイックスタートに進んで、アプリケーションにアクセスできるアカウントの種類を構成する方法を確認してください。 たとえば、組織内のユーザーのみにアクセスを制限したり (シングルテナント)、他の Microsoft Entra テナントのユーザーを許可したり (マルチテナント)、個人用 Microsoft アカウントを持つユーザーを許可したり (MSA) することができます。