マルチ テナント型でのサーバー間認証の使用
マルチテナント機能は、最も一般的なアプリ シナリオであり、[Microsoft AppSource] を使用して配布されたアプリケーションに使用されますが、[Microsoft AppSource] でアプリケーションを一覧表示せずにマルチテナント型を使用することができます。
各 Microsoft Dataverse 組織は、Microsoft Entra ID テナントに関連付けられています。 Web アプリケーションまたはサービスは、独自の Microsoft Entra ID テナントで登録されます。
このシナリオでは、管理者がアプリケーションがテナントのデータにアクセスする許可を付与した後に、すべての Dataverse テナントはマルチテナント型アプリケーションを潜在的に使用できます。
要件
サーバー間の (S2S) 認証を使用するマルチテナント型アプリケーション テストを作成してテストするには次のものが必要です:
アプリケーションまたはサービスの公開に使用する Microsoft Entra ID テナント。
2 件の Dataverse サブスクリプション
- 1 つは、アプリまたはサービスの公開に使用する Microsoft Entra ID テナントに関連付けられている必要があります。
- もう 1 つは、サブスクライバーがアプリケーションにアクセスする方法をテストするための試用版サブスクリプションです。
概要: アプリケーションの開発とテスト
作成するアプリは、アプリを公開する時に使用する Microsoft Entra ID テナントに登録する必要があります。
高いレベルでは、プロセスは次のように構成されます:
- Microsoft Entra ID テナントに登録されたマルチテナント型 Web アプリケーションを作成します。
- [Dataverse] テナントで登録されたアプリケーションに関連付けられるアプリケーション ユーザーを作成します
- カスタム セキュリティ ロールを作成し、Dataverse テナントのアプリケーション ユーザーに割り当てます
- Dataverse テナントを使用してアプリケーションをテストします
- 別の Dataverse テナントを使用してアプリケーションをテストします
Microsoft Entra ID テナントに登録されたマルチテナント型 Web アプリケーションを作成します
マルチテナント型 Web アプリケーションまたは Microsoft Entra ID を認証プロバイダーとして使用するサービスを作成します。
これをどうやって行うのかは、このトピックの焦点ではありません。 これにアプローチして、要件や好みに合った選択をすることができるいくつかの方法があります。 詳細とサンプルについては、次のリンクを参照してください:
- 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 へ送信されます。 |
Key | Microsoft Entra ID に対して認証し、Web API を呼び出すときにクライアント 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 を選択します。
- アプリ登録をクリックして、Visual Studio を使用して作成したアプリケーションを検索します。
- Dataverse データにアクセスするためのアプリケーション特権を付与する必要があります。 API アクセス領域で必要なアクセス許可をクリックします。 Windows Azure Active Directory に対して既に許可が与えられていることが確認できます。
- 追加をクリックし、次に API の選択をクリックします。 一覧で、Dynamics 365 を選択し、選択ボタンをクリックします。
- アクセス許可の選択で、組織のユーザーとして Dynamics 365 にアクセスするを選択します。 次に、選択ボタンをクリックします。
- これらのアクセス許可を追加するには、完了をクリックします。 完了したらアクセス許可が適用されていることを確認する必要があります。
Dataverse で登録されたアプリケーションに関連付けられるアプリケーション ユーザーを作成します
アプリケーションをアプリケーションのサブスクライバーの 1 つである Dataverse データにアクセスする場合、サブスクライバーの Dataverse 組織にアプリケーション ユーザーが必要になります。 任意の Dataverse ユーザーと同様、このアプリケーション ユーザーは、ユーザーがアクセスできるデータを定義する少なくとも 1 つのセキュリティロールに関連付けられている必要があります。
SystemUser テーブルには、このデータを保存する 3 つの新しい列があります。
スキーマ名 | 表示名 | 型 | 内容 |
---|---|---|---|
ApplicationId | アプリケーション ID | UniqueidentifierType | アプリケーションの識別子。 これは、別のアプリケーションのデータにアクセスするために使用されます。 |
ApplicationIdUri | アプリケーション ID の URI | StringType | 外部アプリケーションの一意の論理識別子として使用される 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 テナントの管理者はアプリケーションの同意を取得する必要があります。 管理者は、ブラウザーを使用してアプリケーションに移動し同意を取得します。 初めてアプリケーションにアクセスすると、このようなダイアログが表示されます:
同意を取得すると、登録されたアプリケーションは、Microsoft Entra ID Enterprise アプリケーション リストに追加され、Microsoft Entra ID テナントのユーザーが使用できるようになります。
管理者が同意を取得した後でなければ、サブスクライバーの Dataverse テナントでアプリケーション ユーザーを作成する必要があります。 「Dynamics 365 アプリケーション ユーザーを手動で作成する」に記載された手順を使用してアプリケーション ユーザーを手動で作成することができます。
初期テストの場合は、これらのステップを手動で実行する必要があります。 サブスクライバーがアプリケーションまたはサービスを利用する準備ができたときに、より効率的なステップを使用します。 これについては、次のセクションで説明します。
アプリケーション ユーザーを展開するメソッドを準備します
サブスクライバーがアプリケーションまたはサービスの同意を取得した後、Dataverse 組織にアプリケーション ユーザーとその他の必須コンポーネントを追加するための簡単で信頼できる方法が必要になります。
アプリケーションに必要な特権を定義し、アプリケーション ユーザーがそのカスタム セキュリティ ロールに関連付けられていることを確認するカスタムセキュリティロールを含める必要があります。 カスタム セキュリティ ロールをソリューションに含めることができるため、カスタム セキュリティ ロールの定義とアプリケーションに必要なその他のソリューション コンポーネントを含む管理 ソリューションを準備する必要があります。
カスタム セキュリティ ロールの作成の詳細については、参照してください
-
Dataverse ソリューションの作成に関する詳細は、次のトピックを参照してください:
ただし、アプリケーション ユーザーをソリューションに含めることはできないため、このアプリケーション ユーザーを作成しカスタム セキュリティ ロールを関連付ける方法を提供する必要があります。
Web サービスを使用して独自のプログラムを作成したりサブスクライバーにプログラムを実行させるなど、これを達成するにはいくつかの方法があります。
Dynamics 365 Package Deployer は、ソリューションおよびデータを別の Dataverse 組織へ自動的に転送するパッケージの準備として使用できるアプリです。 詳細: Package Deployer のパッケージを作成する
関連項目
単一テナント型のサーバー間認証の使用
サーバー間 (S2S) 認証を使用して Web アプリケーションを作成する
Microsoft Dataverse Web サービスで認証する
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。