単一テナント型のサーバー間認証の使用

単一テナント型サーバー間 (S2S) シナリオは通常、認証に Active Directory フェデレーション サービス (AD FS) を使用した複数の Microsoft Dataverse 環境を持つエンタープライズ組織に対して適用されます。 ただしアプリケーションが他の環境に配布されない場合は、環境によって適用することが可能です。

単一 Azure Active Directory (Azure AD) テナント向けのすべての Dataverse 環境に接続する Web アプリケーションまたはサービスを作成できます。

マルチテナント型シナリオの違い

単一テナント型サーバー間認証の Web アプリケーションまたはサービスの作成は、マルチテナント型の組織の認証と類似していますが、いくつかの重要な違いがあります。

  • すべての組織がテナント内にあるため、テナント管理者が組織ごとに同意を許可する必要はありません。 アプリケーションはテナントに一度登録するだけです。

  • キーよりもむしろ証明書を使用することもできます。

この記事の最後の 関連項目 セクションでは、マルチテナント機能への単一テナント アプリケーションのアップグレードに関する情報へのリンクがあります。

要件

サーバー間の認証を使用する単一テナント型アプリケーション テストを作成してテストするには、次のものが必要です:

  • 提供されているサンプル アプリケーションを登録するときに使用する Azure AD テナント。
  • Azure AD テナントと関連付けられている Dataverse サブスクリプションです。
  • Azure AD テナントおよび Dataverse 環境の管理者特権。

Azure アプリケーション登録

Azure AD アプリケーション登録を作成するには、次の手順に従います。

  1. https://admin.microsoft.com に移動してサインインするか、Dataverse 環境の Web ページから左上隅のアプリケーション ランチャーを選択します。

  2. 管理 > 管理センター > Azure Active Directory を選択します。

  3. 左パネルで、Azure Active Directory > アプリ登録 (プレビュー) を選択します

  4. + 新しい登録 を選択します

  5. アプリケーションの登録 フォームにアプリの名前を指定し、この組織のディレクトリ内のアカウントのみ を選択して、登録 を選択します。 リダイレクト URI は、このチュートリアルと付属のサンプル コードについては不要です。

    申請フォームを登録します。

  6. 概要 ページ で、API のアクセス許可 を選択します

    アプリ登録許可。

  7. + アクセス許可の追加 を選択します

  8. Microsoft APIs タブで、Dynamics CRM を選択します

  9. API アクセス許可の要求 フォームで、委任されたアクセス許可 を選択し、user_impersonation を確認して、アクセス許可の追加 を選択します

    API アクセス許可の設定。

  10. API のアクセス許可 ページで、org-name に管理者の同意を与える を選択し、確認メッセージが表示されたら はい を選択します

    API アクセス許可を付与しています。

  11. ナビゲーション ウィンドウの 概要 をクリックし、アプリ登録の 表示名アプリケーション IDディレクトリ ID の値を記録します。 これらの値は、後でコード サンプルで指定します。

  12. ナビゲーション ウィンドウで、証明書とシークレット を選択します

  13. クライアント シークレット で、新しいクライアント シークレットの追加 を選択してシークレットを作成します

  14. フォームに説明を入力して 追加 を選択します。 シークレットの文字列を記録します。 現在の画面を離れると、シークレットを再び表示することはできません。

アプリケーション ユーザーの作成

環境内にライセンスのない "アプリケーション ユーザー" を作成できます。 このアプリケーション ユーザーは、アプリケーションを使用しているエンド ユーザーに代わって組織のデータにアクセスできます。

アプリケーション ユーザーの作成の手順については アプリケーション ユーザーの作成 を参照してください。

アプリケーション ユーザーのセキュリティ ロールを管理する手順については、アプリケーション ユーザーのロールを管理する を参照してください

注意

環境では、各 Azure AD に登録されたアプリケーションに対して 1 人のアプリケーション ユーザーのみがサポートされます。 アプリケーション ユーザーが作成されると、プライマリ メール アドレスまたはユーザー名を変更することはできなくなります。

S2S を使用して実際のアプリケーションを開発するときは、ソリューションに格納して、アプリケーションとともに配布できる、ユーザー定義のセキュリティ ロールを使用する必要があります。

アプリケーション ユーザーの有効化または無効化

アプリケーション ユーザーが作成されると、自動的にアクティブ化されます。 アプリケーション ユーザーの状態が非アクティブ化されている場合は、Power Platform 管理センターでアクティブ化します。 また、Power Platform 管理センターは、使用されなくなったアプリケーション ユーザーを非アクティブ化します。

詳細: アプリケーション ユーザーをアクティブ化または非アクティブ化する

注意事項

アプリケーション ユーザーを無効にすると、そのアプリケーション ユーザー を使用するすべての統合シナリオが中断されます。

アプリケーションのコーディングと実行

次の手順に従って、サンプル アプリケーションをダウンロード、構築、および実行します。 サンプルは Web API を呼び出して、組織の上位 3 つのアカウント (名前別) のリストを返します。

  1. Visual Studio 2017 SingleTenantS2S サンプルをダウンロードします。
  2. アプリケーション登録とサーバー キーの値で App.config ファイルを更新します。
  3. アプリケーションをビルドして実行します。

予測した結果

組織の上位 3 つのアカウント名の一覧を示す OData の返信。

コンソール出力の例

以下に示す例は、「Test Account 1」および「Test Account 2」という 2 つのアカウントのみ持つ組織から取得したコンソール出力です。

{
"@odata.context":"https://crmue2.api.crm.dynamics.com/api/data/v9.1/$metadata#accounts(name)",
"@Microsoft.Dynamics.CRM.totalrecordcount":-1,
"@Microsoft.Dynamics.CRM.totalrecordcountlimitexceeded":false,

"value":[
{"@odata.etag":"W/\"4648334\"","name":"Test Account 1","accountid":"28630624-cac9-e811-a964-000d3a3ac063"},
{"@odata.etag":"W/\"4648337\"","name":"Test Account 2","accountid":"543fd72a-cac9-e811-a964-000d3a3ac063"}]
}

関連項目

マルチ テナント型でのサーバー間認証の使用
サーバー間 (S2S) 認証を使用して Web アプリケーションを作成する
方法: マルチテナント型のアプリケーションを使用するユーザーAzure Active Directory にサインインする

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。