私たちのアプリケーション (以下「XYZ_App」と呼びます) は、マルチテナント SaaS アプリケーションです。Microsoft AppSource で、マルチテナントの "Web アプリ / API" (以下、"AppSourceXYZ_App" と呼びます) として利用できるようにする作業を進めています。
マルチテナンシーが望ましい/必要な場合、ドキュメントに記載されているように、「共通」を指すエンドポイントで OpenID Connect の実装を開始しました。
XYZ_App では、各 XYZ_App テナントが関連付けられている AAD インスタンスを知るために、システムに情報を追加しました (この AAD インスタンスに Microsoft が割り当てた GUID を使用します。"rename-safe.onmicrosoft.com" 表現は使用していません)。
「一般的な」エンドポイントを使用する場合、JWT から発行者を手動で検証して、それが予期されたものであることを確認する必要がありました。ユーザーは、contoso.onmicrosoft.com に関連付けられた XYZ_App のテナントへのアクセスを要求する XYZ_App にアクセスでき、「ログイン」に誘導されます。 .microsoftonline.com/common」を使用して認証し、別の AAD インスタンス (以下では「anotherAADInstance.onmicrosoft.com」と呼びます) からのユーザーで認証することを決定します。このシナリオでは、ユーザーが anotherAADInstance.onmicrosoft.com で正常に認証できたとしても、XYZ_App のリダイレクト URI は、JWT 発行者が contoso.onmicrosoft.com のものであることを確認する必要があります。この設定を Scenario_1 と呼びます。
そのシナリオを念頭に置いて、"common" を使用せず、login.microsoftonline.com への要求をその場でカスタマイズすることを考えました。特定の AAD インスタンスに対して認証を強制する要求を「投獄」しようとします。発行者が適切なものであることを確認するために、リダイレクト URI で検証を実行する必要がありますが、このアプローチは私たちの生活を楽にするかもしれないと考えました。この設定を Scenario_2 と呼びます。
Scenario_2 は長期的に実行可能だと思いますか、それとも近視眼的すぎますか? OpenID Connect に関する私の現在の知識に基づくと、Scenario_2 で見られる制限の 1 つは、アプリで「ブローカー アカウント」をサポートすると問題が発生することです。
「ブローカー口座」の説明: 私たちの業界では、一部の外部ユーザーがシステムへのアクセスを許可されています。「BrokerCo」という会社 (独自の brokerco.onmicrosoft.com AAD インスタンスを持つ) があり、Broker1 と Broker2 の 2 人の従業員がいるとします。anotherAADInstance と contoso の両方が、Broker1 と Broker2 を雇って、ブローカー サービスが XYZ_App でタスクを実行できるようにしました。XYZApp にアクセス権を付与する必要があります。OpenID Connect の観点からの認証の理想的な方法は何ですか? XYZ_App が認証に "login.microsoftonline.com/common" を使用した場合 (シナリオ 1 のように、シナリオ 2 のような "jailed" アクセスではなく)、Broker1 と Broker2 は brokerco.onmicrosoft.com で認証できます (AAD "外部ユーザーなし" " anotherAADInstance または contoso の場合)、
この問題を解決するための提案や指針はありますか?
バックグラウンド コンテキスト: OpenID Connect 発行者と遊んでいるときに、次のエラー メッセージが表示されました: AADSTS50020 : ID プロバイダーからのユーザー アカウント 'testuser@anotherAADInstance.onmicrosoft.com' 9bZZ-XXXXxxxxXXXX/ ' はテナント 'XYZ Publisher' に存在せず、そのテナントのアプリケーション 'YYYYYYYY-fake0-GUID-YYYYyyyyYYYY' にアクセスできません。アカウントは、最初にテナントに外部ユーザーとして追加する必要があります。サインアウトし、別の Azure Active Directory ユーザー アカウントで再度サインインします。
前もって感謝します !