マルチテナントは最も一般的なアプリ シナリオであり、Microsoft Marketplace を使用して配布されるアプリに使用されますが、Microsoft Marketplace でアプリケーションを一覧表示せずにマルチテナントを使用することもできます。
各Microsoft Dataverse組織は、Microsoft Entra ID テナントに関連付けられています。 Web アプリケーションまたはサービスは、独自のMicrosoft Entra ID テナントに登録されています。
このシナリオでは、管理者がアプリケーションがテナントのデータにアクセスする許可を付与した後に、すべての Dataverse テナントはマルチテナント型アプリケーションを潜在的に使用できます。
要件
サーバー間の (S2S) 認証を使用するマルチテナント型アプリケーション テストを作成してテストするには次のものが必要です:
アプリケーションまたはサービスの発行に使用するMicrosoft Entra ID テナント。
2 件の Dataverse サブスクリプション
- アプリケーションやサービスを発行するために使用するMicrosoft Entra IDテナントに関連付けられている必要があります。
- もう 1 つは、サブスクライバーがアプリケーションにアクセスする方法をテストするための試用版サブスクリプションです。
概要: アプリケーションの開発とテスト
作成するアプリケーションは、アプリケーションを発行するときに使用するMicrosoft Entra ID テナントに登録する必要があります。
高いレベルでは、プロセスは次のように構成されます:
- Microsoft Entra ID テナントに登録されたマルチテナント Web アプリケーションを作成します。
- [Dataverse] テナントで登録されたアプリケーションに関連付けられるアプリケーション ユーザーを作成します
- カスタム セキュリティ ロールを作成し、Dataverse テナントのアプリケーション ユーザーに割り当てます
- Dataverse テナントを使用してアプリケーションをテストします
- 別の Dataverse テナントを使用してアプリケーションをテストします
Microsoft Entra ID テナントに登録されたマルチテナント Web アプリケーションを作成する
認証プロバイダーとしてMicrosoft Entra IDを使用するマルチテナント Web アプリケーションまたはサービスを作成します。
これをどうやって行うのかは、このトピックの焦点ではありません。 これにアプローチして、要件や好みに合った選択をすることができるいくつかの方法があります。 詳細とサンプルについては、次のリンクを参照してください:
Microsoft Entra ID と OpenID Connect を使用してマルチテナント SaaS Web アプリケーションを構築する - Microsoft ID プラットフォームを使用する任意の組織内の ASP.NET Core Web アプリサインイン ユーザー
Microsoft Entra IDアプリケーションを登録するには、次の値が必要です。
| 値 | 説明 |
|---|---|
| アプリケーション ID URI | アプリケーションの識別子です。 この値は認証時にMicrosoft Entra IDに送信され、呼び出し元がトークンを必要とするアプリケーションを示します。 さらに、この値はトークンに含まれ、対象のターゲットであることがアプリケーションに認識されます。 |
| 返信 URL およびリダイレクト URI | Web API または Web アプリケーションの場合、応答 URL は、認証が成功した場合にトークンを含め、Microsoft Entra IDが認証応答を送信する場所です。 |
| クライアント ID | アプリケーションの ID。アプリケーションの登録時にMicrosoft Entra IDによって生成されます。 認証コードまたはトークンを要求すると、認証時にクライアント ID とキーがMicrosoft Entra IDに送信されます。 |
| 鍵 | Web API を呼び出すためにMicrosoft Entra IDに認証するときにクライアント ID と共に送信されるキー。 |
アプリケーションが登録されると、登録されたアプリケーションの一意識別子である Microsoft Entra ID オブジェクト ID が割り当てられます。
Visual Studioを使用して新しい ASP.NET MVC アプリケーションを作成する場合は、アプリケーションがマルチテナント機能をサポートするように指定するオプションがあります。 MVC アプリケーション用テンプレートには、どのような種類の認証が行われるかを指定するオプションがあります。 プロジェクトの作成時にプロジェクトのプロパティを設定することで、認証方法を選択するオプションがあります。 次の図で使用できるオプションを表示します:
これらのオプションを使用してプロジェクトを構成すると、このシナリオをサポートする基本的なアプリケーションの [OWIN] ミドルウェアおよびスキャフォールディングを使用するよう構成されます。 基本的な変更を加えれば、Dataverse で動作するように変更することができます。
開発用アプリケーションを作成して登録するプロセスについては、[https://localhost] を URL にサインオンと返答 URL 値として使用し、公開前にアプリケーションをローカルでテストしてデバッグすることができます。 アプリの公開前にこれらの値を変更する必要があります。
アプリを登録する場合、ClientSecret としても呼ばれるキーを生成する必要があります。 これらのキーは 1 年、または 2 年間構成することができます。 アプリケーションのホストは、この値をパスワードのように扱う必要があり、期限が切れる前にキーの更新を管理する責任があります。 Key Vaultを使用することもできます。 詳細情報: https://azure.microsoft.com/services/key-vault/
アプリケーションにDataverseデータアクセス権を付与してください
これが、Dataverse テナントをMicrosoft Entra ID テナントに関連付ける必要がある理由です。 Microsoft Entra ID テナントが Dataverse テナントに関連付けられていない場合、次の手順を実行することはできません。
- https://portal.azure.com に移動し、Microsoft Entra ID を選択します。
- App registrationsをクリックし、Visual Studioを使用して作成したアプリケーションを探します。
- Dataverse データにアクセスするためのアプリケーション特権を付与する必要があります。 API アクセス領域で必要なアクセス許可をクリックします。 Windows Azure Active Directoryに対するアクセス許可が既にあることがわかります。
- 追加をクリックし、次に API の選択をクリックします。 一覧で Dynamics 365 を選択し、 Select ボタンをクリックします。
- アクセス許可の選択で、組織のユーザーとして Access Dynamics 365 を選択します。 次に、選択ボタンをクリックします。
- これらのアクセス許可を追加するには、完了をクリックします。 完了したらアクセス許可が適用されていることを確認する必要があります。
Dataverse で登録されたアプリケーションに関連付けられるアプリケーション ユーザーを作成します
アプリケーションがアプリケーションのいずれかのサブスクライバーの Dataverse データにアクセスする場合、サブスクライバーの Dataverse 組織内のアプリケーション ユーザーが必要になります。 任意の Dataverse ユーザーと同様、このアプリケーション ユーザーは、ユーザーがアクセスできるデータを定義する少なくとも 1 つのセキュリティロールに関連付けられている必要があります。
SystemUser テーブルには、このデータを保存する 3 つの新しい列があります。
| スキーマ名 | 表示名 | タイプ | 説明 |
|---|---|---|---|
| ApplicationId | アプリケーション ID | UniqueidentifierType | アプリケーションの識別子。 これは、別のアプリケーションのデータにアクセスするために使用されます。 |
| ApplicationIdUri | アプリケーション ID URI | 文字列型 | 外部アプリケーションの一意の論理識別子として使用される URI。 これは、アプリケーションを検証するのに使用できます |
| AzureActiveDirectoryObjectId | Azure AD オブジェクト ID | UniqueidentifierType | アプリケーション ディレクトリのオブジェクト ID です。 |
このsystemuser``AzureActiveDirectoryObjectId プロパティ値は、登録済みアプリケーションの Microsoft Entra ID オブジェクト ID への参照である必要があります。 この参照はアプリケーション ユーザーが ApplicationId の値に基づいて作成されるとき Dataverse に設定されます。
注意
独自の Dataverse テナントとそれに関連付けられているMicrosoft Entra ID テナントを使用してアプリケーションを最初に開発するときは、登録されたアプリケーションが既に Microsoft Entra ID テナントの一部であるため、アプリケーション ユーザーを作成するだけで済みます。
ただし、テストのために別の組織でアプリケーション ユーザを作成するため、またはユーザがアプリケーションを使用するたびに、まずアプリケーションの同意を取得する必要があるため、プロセスのステップが異なります。 詳細については、「別のDynamics 365 テナントを使用してアプリケーションをテストする」を参照してください。
アプリケーション ユーザーによるセキュリティ ロールを作成します
次の手順で、Dataverse アプリケーション ユーザーを作成します。 このユーザーの特権とアクセス権は、設定したカスタム セキュリティ ロールで定義されます。 アプリケーションでユーザーを作成する前に、カスタム セキュリティ ロールを作成してユーザーを関連付けることができます。 詳細: セキュリティ ロールの作成または編集
注意
アプリケーション ユーザーは既定の Dataverse セキュリティ ロールの 1 つと関連付けることができません。 アプリケーション ユーザーに関連付ける、ユーザー定義のセキュリティ ロールを作成する必要があります。
Dataverse アプリケーション ユーザーを手動で作成します
ライセンスのないアプリケーション ユーザーを作成するための対話型の手順については、この記事 アプリケーション ユーザーの作成をご覧ください。 アプリケーション ユーザーの作成後、アプリケーション ユーザー用のセキュリティ ロールを作成する で作成したカスタム セキュリティ ロールに関連付けます。
詳細: Power Platform 管理センターでアプリケーション ユーザーを管理する
Dataverse テナントを使用してアプリケーションをテストします
アプリケーションはMicrosoft Entra ID テナントに登録されており、開発組織のアプリケーション ユーザーは既に構成されているため、独自の Dataverse テナントに対して引き続きアプリケーションを開発できます。 ただし、これは、マルチテナント機能の有効なテストではありません。 別の Dataverse テナントでアプリケーションをテストする必要があります。
別の Dataverse テナントを使用してアプリケーションをテストします
別の Dataverse テナントでアプリケーションをテストする前に、Microsoft Entra ID テナントの管理者がアプリケーションの同意を付与する必要があります。 管理者は、ブラウザーを使用してアプリケーションに移動し同意を取得します。 初めてアプリケーションにアクセスすると、このようなダイアログが表示されます:
Grant consent to access Dynamics 365 のデータにアクセスする許可を与える。
ユーザーが同意すると、登録されたアプリケーションが Microsoft Entra ID Enterprise アプリケーションの一覧に追加され、Microsoft Entra ID テナントのユーザーが使用できるようになります。
管理者が同意を与えた後でのみ、サブスクライバーの Dataverse テナントにアプリケーション ユーザーを作成する必要があります。 アプリケーション ユーザーは、「manually create a Dynamics 365 application user で説明されている手順を使用して手動で作成できます。
初期テストの場合は、これらのステップを手動で実行する必要があります。 サブスクライバーがアプリケーションまたはサービスを利用する準備ができたときに、より効率的なステップを使用します。 これについては、次のセクションで説明します。
アプリケーション ユーザーを展開するメソッドを準備します
サブスクライバーがアプリケーションまたはサービスの同意を取得した後、Dataverse 組織にアプリケーション ユーザーとその他の必須コンポーネントを追加するための簡単で信頼できる方法が必要になります。
アプリケーションに必要な特権を定義し、アプリケーション ユーザーがそのカスタム セキュリティ ロールに関連付けられていることを確認するカスタムセキュリティロールを含める必要があります。 カスタム セキュリティ ロールをソリューションに含めることができるため、カスタム セキュリティ ロールの定義とアプリケーションに必要なその他のソリューション コンポーネントを含む管理 ソリューションを準備する必要があります。
カスタム セキュリティ ロールの作成の詳細については、参照してください
-
Dataverse ソリューションの作成に関する詳細は、次のトピックを参照してください:
ただし、アプリケーション ユーザーをソリューションに含めることはできないため、このアプリケーション ユーザーを作成しカスタム セキュリティ ロールを関連付ける方法を提供する必要があります。
Web サービスを使用して独自のプログラムを作成したりサブスクライバーにプログラムを実行させるなど、これを達成するにはいくつかの方法があります。
Dynamics 365 パッケージ 展開ツールは、ソリューションとデータを別の Dataverse 組織に転送する自動化のためのパッケージの準備に使用できるアプリケーションです。 詳細: Package Deployer のパッケージを作成する
関連項目
単一テナント型のサーバー間認証の使用
サーバー間 (S2S) 認証を使用して Web アプリケーションを作成する
Microsoft Dataverse ウェブサービスで認証する