Microsoft Entra アプリ ギャラリーから OpenID Connect OAuth アプリケーションを構成する
ギャラリーから OpenID アプリケーションを追加する手順
クラウド アプリケーション管理者以上として Microsoft Entra 管理センターにサインインします。
[ID]>[アプリケーション]>[エンタープライズ アプリケーション] の順に移動します。
ダイアログの上部にある [新しいアプリケーション] を選択します。
検索ボックスに、アプリケーション名を入力します。 検索パネルで目的のアプリケーションを選択して、アプリケーションにサインアップします。
[アプリケーション名] ページで [サインアップ] ボタンをクリックします。
注意
ここでテナント管理者は、サインアップ ボタンを選択して、アプリケーションに同意する必要があります。 これによりアプリケーションが外部テナントに追加されて、構成を行うことができます。 アプリケーションを明示的に追加する必要はありません。
サインイン資格情報については、アプリケーションのログイン ページまたは Microsoft Entra ID ページにリダイレクトされます。
認証に成功したら、同意ページで同意を受け入れます。 その後、アプリケーションのホーム ページが表示されます。
注意
追加できるアプリケーションのインスタンスは 1 つだけです。 既に 1 つ追加しているときに再び同意を試みたとしても、再度テナントに追加されることはありません。 そのため論理的には、テナント内で使用できるのは 1 つのアプリ インスタンスのみです。
下のビデオに従って、ギャラリーから OpenID アプリケーションを追加します。
OpenID Connect を使用する認証フロー
最も基本的なサインイン フローには次の手順が含まれています。
マルチテナント アプリケーション
マルチテナント アプリケーションは、1 つの組織ではなく、多数の組織で使用することを目的としています。 通常、これらは独立系ソフトウェア ベンダー (ISV) によって作成された SaaS (サービスとしてのソフトウェア) アプリケーションです。
マルチテナント アプリケーションは、それらが使用される各ディレクトリにプロビジョニングする必要があります。 これらを登録するには、ユーザーまたは管理者の同意が必要です。 この同意プロセスは、アプリケーションをディレクトリに登録し、Graph API または別の Web API へのアクセス権を付与するときに開始されます。 別の組織のユーザーまたは管理者がアプリケーションを使用するためにサインアップすると、アプリケーションに必要なアクセス許可がダイアログ ボックスに表示されます。
ユーザーまたは管理者は、そこでアプリケーションに同意することができます。 この同意によって、アプリケーションは定められたデータへのアクセスが許可され、最終的にディレクトリに登録されます。
注意
複数のディレクトリ内のユーザーがアプリケーションを使用できるようにする場合、ユーザーが属するテナントを確認するためのメカニズムが必要です。 シングルテナント アプリケーションでは、それ自体のディレクトリでユーザーを探すだけで済みます。 マルチテナント アプリケーションでは、Microsoft Entra ID のすべてのディレクトリから特定のユーザーを識別する必要があります。
このタスクを実行するために、Microsoft Entra ID には、テナント固有のエンドポイントの代わりに、マルチテナント アプリケーションがサインイン要求を送信できる共通の認証エンドポイントが用意されています。 このエンドポイントは、Microsoft Entra ID 内にあるすべてのディレクトリの https://login.microsoftonline.com/common
です。 テナント固有のエンドポイントであれば https://login.microsoftonline.com/contoso.onmicrosoft.com
のようになります。
アプリケーションを開発するときは、共通のエンドポイントを考慮することが重要です。 サインイン、サインアウト、トークンの検証時に複数のテナントに対応するためのロジックが必要となります。
既定では、Microsoft Entra ID を使うと、マルチテナント アプリケーションが昇格します。 これらは、複数の組織全体でアクセスが容易です。また、お客様が同意を受け入れた後の使用が容易です。
同意フレームワーク
Microsoft Entra の同意フレームワークを使って、マルチテナントの Web クライアント アプリケーションとネイティブ クライアント アプリケーションを開発できます。 これらのアプリケーションには、そのアプリケーションが登録されている Microsoft Entra テナントとは異なるテナントのユーザー アカウントを使ってサインインできます。 また、次のような Web API へのアクセスが必要になることもあります。
- Microsoft Graph API (Microsoft Entra ID、Intune、Microsoft 365 のサービスにアクセスするため)。
- その他の Microsoft サービスの API。
- お客様独自の Web API。
このフレームワークは、ディレクトリへの登録を要求するアプリケーションに対して同意を与えるユーザーまたは管理者の存在が前提となっています。 登録には、ディレクトリ データへのアクセスが伴う場合があります。 同意が与えられると、クライアント アプリケーションがユーザーに代わって Microsoft Graph API を呼び出し、必要に応じて情報を利用できるようになります。
Microsoft Graph API を使用してアクセスできる Microsoft 365 のデータの例を次に示します。
- Exchange の予定表とメッセージ。
- SharePoint のサイトとリスト。
- OneDrive のドキュメント。
- OneNote のノートブック。
- Planner のタスク。
- Excel のブック。
Microsoft Entra ID のユーザーとグループや、Microsoft クラウド サービスの他のデータ オブジェクトにも、Graph API を使用してアクセスすることができます。
以下の手順は、アプリケーションの開発者とユーザーにとっての同意エクスペリエンスがどのようなものになるかを示しています。
リソースまたは API にアクセスするために一定のアクセス許可を要求する必要がある Web クライアント アプリケーションがあると仮定しましょう。 Azure Portal は、構成時にアクセス許可要求を宣言するために使用されます。 これらは他の構成設定と同様、アプリケーションを Microsoft Entra に登録する一環として行います。 必要なアクセス許可の要求パスについては、以下の手順に従ってください。
a. メニューの左側で [アプリの登録] をクリックし、検索ボックスにアプリケーション名を入力して自分のアプリケーションを開きます。
b. [API アクセス許可の表示] をクリックします。
c. [アクセス許可の追加] をクリックします。
d. [Microsoft Graph] をクリックします。
e. [委任されたアクセス許可] と [アプリケーションのアクセス許可] から必要なオプションを選択します。
アプリケーションのアクセス許可が更新された状況を考えてみましょう。 アプリケーションは実行中であり、ユーザーが初めてアプリケーションを使うところです。 アプリケーションではまず、Microsoft Entra ID の /authorize エンドポイントから認証コードを取得する必要があります。 取得した認証コードは、後でアクセス トークンと更新トークンの取得に使用します。
ユーザーの認証がまだであれば、Microsoft Entra ID の /authorize エンドポイントによってサインイン画面が表示されます。
ユーザーのサインインが終わると、そのユーザーに対して同意ページを表示する必要があるかどうかが Microsoft Entra ID によって判定されます。 表示の要否の判定基準は、ユーザー (またはそのユーザーが所属する組織の管理者) がアプリケーションに既に同意を与えているかどうかです。
同意がまだであれば、Microsoft Entra からユーザーに対して同意を求めるメッセージと、アプリケーションが機能するうえで必要なアクセス許可が表示されます。 同意ダイアログ ボックスに表示されるアクセス許可は、[委任されたアクセス許可] で選択されているものと同じになります。
通常のユーザーはいくつかのアクセス許可に同意できます。 その他のアクセス許可では、テナント管理者の同意が必要になります。
管理者の同意とユーザーの同意の違い
管理者であれば、テナント内のユーザー全員に代わってアプリケーションの委任されたアクセス許可に同意することもできます。 管理者が同意すると、テナントの各ユーザーには同意ダイアログ ボックスが表示されなくなります。 管理者ロールを持つユーザーは同意を付与することができます。 [管理]>[API アクセス許可] を選択します。 [同意の付与] で、[管理者同意の付与] を選択します。
Note
現在、MSAL.js が使用されるシングルページ アプリケーション (SPA) では、[管理者の同意の付与] ボタンを使用して明示的に同意を付与する必要があります。 そうしないと、アクセス トークンが要求されたときにアプリケーションでエラーが発生します。
アプリケーション専用アクセス許可では、常にテナント管理者の同意が必要になります。 アプリケーションがアプリ専用アクセス許可を要求する場合に、ユーザーがそのアプリケーションにサインインしようとすると、エラー メッセージが表示されます。 メッセージによって、そのユーザーは同意できないことが伝えられます。
アプリケーションで管理者の同意が必要なアクセス許可を使用する場合、ジェスチャ (管理者がアクションを開始できるボタンやリンク) を設定する必要があります。 通常、このアクションに対してアプリケーションから送信される要求は OAuth2 または OpenID Connect 承認要求です。 この要求には prompt=admin_consent というクエリ文字列パラメーターが含まれています。
管理者が同意し、顧客のテナントにサービス プリンシパルが作成されると、以降のサインイン要求では prompt=admin_consent パラメーターは不要になります。 管理者は要求されたアクセス許可を許容可能と判断しているため、その時点からは、テナント内の他のユーザーが同意を求められることはありません。
テナント管理者は、通常ユーザーによるアプリケーションへの同意を無効にすることができます。 通常ユーザーによる同意が無効化された場合、テナントでアプリケーションを使用するには常に管理者の同意が必要になります。 エンド ユーザーによる同意を無効化した状態でアプリケーションをテストしたい場合は、Azure portal に構成スイッチがあります。 これは [エンタープライズ アプリケーション] の [ユーザー設定] セクションにあります。
prompt=admin_consent パラメーターは、管理者の同意を必要としないアクセス許可を要求するアプリケーションでも使用できます。 たとえば、テナント管理者が 1 回 "サインアップする" と、その時点からは他のユーザーが同意を求められないエクスペリエンスを必要とするアプリケーションが該当します。
アプリケーションが管理者の同意を必要とし、prompt=admin_consent パラメーターが送信されることなく、管理者がサインインすることを想像してみてください。 管理者がアプリケーションへの同意に成功したとき、それが適用されるのは、自分のユーザー アカウントだけです。 通常のユーザーは、アプリケーションへのサインインも同意も実行できないままです。 この機能は、他のユーザーのアクセスを許可する前に、テナント管理者がアプリケーションを確認できるようにしたい場合に役立ちます。
次のステップ
Microsoft Entra テナント内のアプリケーションへの OIDC ベースのシングル サインオン (SSO) を設定する