マルチ テナント型でのサーバー間認証の使用

 

公開日: 2017年1月

対象: Dynamics 365 (online)

これは、最も一般的なシナリオであり、[Microsoft AppSource] を使用して配布されたアプリケーションに使用されますが、[Microsoft AppSource] でアプリケーションを一覧表示せずにマルチテナント型を使用することができます。

各 [Dynamics 365 (オンライン)] 組織は、[Azure Active Directory] (Azure AD) テナントに関連付けられています。 Web アプリケーションまたはサービスには、独自の Azure AD テナントが登録されます。

このシナリオでは、すべての [Dynamics 365 (オンライン)] テナントは、アプリケーションがデータにアクセスするための同意を取得した後、マルチテナント型アプリケーションを潜在的に使用できます。

このトピックの内容

要件

概要: アプリケーションの開発とテスト

[Dynamics 365] で登録されたアプリケーションに関連付けられるアプリケーション ユーザーを作成します

[Dynamics 365] テナントを使用するアプリケーションをテストします

別の [Dynamics 365] テナントを使用してアプリケーションをテストします

アプリケーション ユーザーを展開するメソッドを準備します

要件

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

  • アプリケーションまたはサービスの公開に使用する Azure AD テナント。

  • 2 Dynamics 365 (オンライン) サブスクリプション

    • 1 つは、アプリケーションまたはサービスの公開に使用する Azure AD テナントに関連付けられている必要があります。

    • もう 1 つは、サブスクライバーがアプリケーションにアクセスする方法をテストするための試用版サブスクリプションです。

概要: アプリケーションの開発とテスト

作成するアプリケーションは、アプリケーションを公開する時に使用する Azure AD テナントを登録する必要があります。

高いレベルでは、プロセスは次のように構成されます:

  1. Azure AD テナントに登録されたマルチテナント型 Web アプリケーションを作成します。

  2. [Dynamics 365 (オンライン)] テナントで登録されたアプリケーションに関連付けられるアプリケーション ユーザーを作成します。

  3. カスタム セキュリティ ロールを作成し、[Dynamics 365 (オンライン)] テナントのアプリケーション ユーザーに割り当てます

  4. [Dynamics 365 (オンライン)] テナントを使用してアプリケーションをテストします

  5. 別の [Dynamics 365 (オンライン)] テナントを使用してアプリケーションをテストします

このプロセスの完全な例については、「チュートリアル: マルチ テナント型のサーバー間認証の使用」を参照してください。

Azure AD テナントに登録されたマルチテナント型 Web アプリケーションを作成します

Azure AD を認証プロバイダーとして使用するマルチテナント型 Web アプリケーションまたはサービスを作成します。

これをどうやって行うのかは、このトピックの焦点ではありません。 これにアプローチして、要件や好みに合った選択をすることができるいくつかの方法があります。 詳細とサンプルについては、次のリンクを参照してください:

Azure AD には、アプリケーションを登録するために次の値が必要です:

説明

アプリケーション ID URI

アプリケーションの識別子です。 この値は認証中に Azure AD へ送信され、発信者がトークンを要求するアプリケーションを示します。 さらに、この値はトークンに含まれ、対象のターゲットであることがアプリケーションに認識されます。

返信 URL およびリダイレクト URI

Web API または Web アプリケーションの場合、返信 URL は、認証が成功した場合、Azure AD がトークンを含む認証応答を送信する場所です。

クライアント ID

アプリケーションの ID は、アプリケーションが登録されるときに Azure AD によって生成されます。 認証コードまたはトークンを要求した場合、認証中にクライアント ID とキーが Azure AD へ送信されます。

キー

Azure AD に認証し、Web API を呼び出すときにクライアント ID と共に送信されるキー。

アプリケーションが登録されると、登録されたアプリケーションの一意識別子である [Azure Active Directory オブジェクト ID ] が割り当てられます。

新規で [Visual Studio 2015] を使用して [ASP.NET] MVC アプリケーションを作成する場合は、アプリケーションがマルチテナント機能をサポートするように指定するオプションがあります。 MVC アプリケーション用テンプレートには、どのような種類の認証が行われるかを指定するオプションがあります。 プロジェクトの作成時にプロジェクトのプロパティを設定することで、認証方法を選択するオプションがあります。 次の図で使用できるオプションを表示します:

ASP.NET MVC Change Authentication Dialog

これらのオプションを使用してプロジェクトを構成すると、このシナリオをサポートする基本的なアプリケーションの [OWIN] ミドルウェアおよびスキャフォールディングを使用するよう構成されます。 基本的な変更を加えれば、[Dynamics 365 (オンライン)] で動作するように変更することができます。 これは、[チュートリアル: マルチ テナント型のサーバー間認証の使用] で示されているアプローチです。

開発用アプリケーションを作成して登録するプロセスについては、[https://localhost] を [URL にサインオン] と [返答 URL] 値として使用し、公開前にアプリケーションをローカルでテストしてデバッグすることができます。 アプリの公開前にこれらの値を変更する必要があります。

アプリを登録する場合、ClientSecret としても呼ばれるキーを生成する必要があります。 これらのキーは 1 年、または 2 年間構成することができます。 アプリケーションのホストは、この値をパスワードのように扱う必要があり、期限が切れる前にキーの更新を管理する責任があります。 [Azure Key Vault] を使用することができます。詳細:https://azure.microsoft.com/en-us/services/key-vault/

[Dynamics 365 (オンライン)] データにアクセスする権限を付与します

このため、[Dynamics 365 (オンライン)] インスタンスは Azure AD テナントに関連付けられている必要があります。 Azure AD テナントが [Dynamics 365 (オンライン)] テナントに関連付けられていない場合、次の手順を実行することはできません。

  1. https://portal.azure.com に移動し、[Azure Active Directory] を選択します。

  2. [アプリ登録] をクリックして、Visual Studio を使用して作成したアプリケーションを検索します。

  3. [Dynamics 365 (オンライン)] データにアクセスするためのアプリケーション特権を付与する必要があります。 [API アクセス] 領域で [必要なアクセス許可] をクリックします。 [Windows Azure Active Directory] に対するアクセス許可が既にあることを確認する必要があります。

  4. [追加] をクリックし、次に [API の選択] をクリックします。 一覧で、[Dynamics 365] を選択し、[選択] ボタンをクリックします。

  5. [アクセス許可の選択] で、[組織のユーザーとして Dynamics 365 にアクセスする] を選択します。 次に、[選択] ボタンをクリックします。

  6. これらのアクセス許可を追加するには、[完了] をクリックします。 完了したらアクセス許可が適用されていることを確認する必要があります。

    Grant Dynamics 365-Permissions to application

[Dynamics 365] で登録されたアプリケーションに関連付けられるアプリケーション ユーザーを作成します

アプリケーションをアプリケーションのサブスクライバーの 1 つである [Dynamics 365] データにアクセスする場合、サブスクライバーの [Dynamics 365] 組織にアプリケーション ユーザーが必要になります。 任意の [Dynamics 365] ユーザーと同様、このアプリケーション ユーザーは、ユーザーがアクセスできるデータを定義する少なくとも 1 つのセキュリティロールに関連付けられている必要があります。

[systemuser] エンティティには、このデータを保存する 3 つの新しい属性があります。

スキーマ名

[表示名]

説明

ApplicationId

アプリケーション ID

UniqueidentifierType

アプリケーションの識別子。 これは、別のアプリケーションのデータにアクセスするために使用されます。

ApplicationIdUri

アプリケーション ID URI

StringType

外部アプリケーションの一意の論理識別子として使用される URI。 これは、アプリケーションを検証するのに使用できます

AzureActiveDirectoryObjectId

Azure AD オブジェクト ID

UniqueidentifierType

これが、アプリケーション ディレクトリ オブジェクト ID です。

この [systemuserAzureActiveDirectoryObjectId] プロパティ値は、登録済みアプリケーションの Azure Active Directory オブジェクト ID の参照である必要があります。 この参照は、アプリケーション ユーザーが [ApplicationId] 値に基づいて作成されるとき、[Dynamics 365] に設定されます。

注意

最初に、独自の [Dynamics 365] テナントとそれに関連付けられた Azure AD テナントを使用してアプリケーションを開発する場合は、登録済みアプリケーションが既に Azure AD テナントの一部であるため、アプリケーションユーザーを容易に作成できます。

ただし、テストのために別の組織でアプリケーション ユーザを作成するため、またはユーザがアプリケーションを使用するたびに、まずアプリケーションの同意を取得する必要があるため、プロセスのステップが異なります。 詳細については、「別の [Dynamics 365] テナントを使用してアプリケーションをテストします」を参照してください。

アプリケーション ユーザーによるセキュリティ ロールを作成します

次の手順で、[Dynamics 365] アプリケーション ユーザーを作成します。 このユーザーの特権とアクセス権は、設定したカスタム セキュリティ ロールで定義されます。 アプリケーションでユーザーを作成する前に、カスタム セキュリティ ロールを作成してユーザーを関連付けることができます。 詳細については、「TechNet: セキュリティ ロールの作成または編集」を参照してください。

注意

アプリケーション ユーザーは既定の Dynamics 365 セキュリティ ロールの 1 つと関連付けることができません。 アプリケーション ユーザーに関連付ける、ユーザー定義のセキュリティ ロールを作成する必要があります。

[Dynamics 365] アプリケーション ユーザーを手動で作成します

このユーザーを作成する手順は、ライセンスを受けたユーザーを作成する手順とは異なります。 次の手順を実行します。

  1. [設定] > [セキュリティ] > [ユーザー] の順に移動します

  2. ビュー ドロップダウンで、[アプリケーション ユーザー] を選択します。

  3. [新規] をクリックします。 次に [アプリケーション ユーザー] フォームを使用していることを確認します。

    フォームの [ アプリケーション ID]、[Application ID URI] および [Azure AD オブジェクト ID] フィールドが表示されない場合は、リストから [アプリケーションのユーザー] フォームを選択する必要があります:

    Select Application User Form

  4. フィールドに適切な値を追加します:

    フィールド

    アプリケーション ID

    Azure AD に登録されたアプリケーションのアプリケーション ID 値。

    氏名

    アプリケーションの名前。

    電子メール 1

    サブスクライバーが連絡するときに使用する電子メール アドレス。

    [ユーザー名]、[アプリケーション ID URI] および [Azure AD オブジェクト ID] はロックされているため、これらのフィールドの値を設定することはできません。

    このユーザーを作成するときのこれらのフィールド値は、ユーザーを保存するときの [アプリケーション ID] 値に基づいて Azure AD から取得されます。

  5. アプリケーション ユーザーを [アプリケーション ユーザーによるセキュリティ ロールを作成します] で作成されたカスタム セキュリティ ロールに関連付けます。 追加詳細:「TechNet: ユーザーへのセキュリティ ロールの割り当て

[Dynamics 365] テナントを使用するアプリケーションをテストします

アプリケーションが Azure AD テナントに登録され、および開発組織のアプリケーション ユーザーが既に構成されているため、独自の [Dynamics 365] テナントに対してアプリケーションを開発し続けることができます。 ただし、これは、マルチテナント機能の有効なテストではありません。 別の [Dynamics 365] テナントでアプリケーションをテストする必要があります。

別の [Dynamics 365] テナントを使用してアプリケーションをテストします

別の [Dynamics 365] テナントでアプリケーションをテストする前に、Azure AD テナントの管理者はアプリケーションの同意を取得する必要があります。 管理者は、ブラウザーを使用してアプリケーションに移動し同意を取得します。 初めてアプリケーションにアクセスすると、このようなダイアログが表示されます:

Grant consent to access Dynamics 365 data

同意を取得すると、登録されたアプリケーションは、Azure AD エンタープライズ アプリケーション リストに追加され、Azure AD テナントのユーザーが使用できるようになります。

管理者が同意を取得した後でなければ、サブスクライバーの [Dynamics 365] テナントでアプリケーション ユーザーを作成する必要があります。 [[Dynamics 365] アプリケーション ユーザーを手動で作成します] に記載された手順を使用してアプリケーション ユーザーを手動で作成することができます。

初期テストの場合は、これらのステップを手動で実行する必要があります。 サブスクライバーがアプリケーションまたはサービスを利用する準備ができたときに、より効率的なステップを使用します。 これについては、次のセクションで説明します。

アプリケーション ユーザーを展開するメソッドを準備します

サブスクライバーがアプリケーションまたはサービスの同意を取得した後、[Dynamics 365] 組織にアプリケーション ユーザーとその他の必須コンポーネントを追加するための簡単で信頼できる方法が必要になります。

アプリケーションに必要な特権を定義し、アプリケーション ユーザーがそのカスタム セキュリティ ロールに関連付けられていることを確認するカスタムセキュリティロールを含める必要があります。 カスタム セキュリティ ロールをソリューションに含めることができるため、カスタム セキュリティ ロールの定義とアプリケーションに必要なその他のソリューション コンポーネントを含む管理 ソリューションを準備する必要があります。

カスタム セキュリティ ロールの作成の詳細については、参照してください

[Dynamics 365] ソリューションの作成に関する詳細は、次のトピックを参照してください:

ただし、アプリケーション ユーザーをソリューションに含めることはできないため、このアプリケーション ユーザーを作成しカスタム セキュリティ ロールを関連付ける方法を提供する必要があります。

[Microsoft Dynamics 365 SDK] を使用して独自のプログラムを作成し、サブスクライバーにプログラムを実行させるなど達成できるいくつかの方法があります。

[Microsoft Dynamics 365 SDK] は、ソリューションおよびデータを別の [Dynamics 365] 組織へ自動的に転送するパッケージの準備として使用できる [CRM パッケージ展開機能] アプリケーションを提供します。詳細:Dynamics 365 Package Deployer 用のパッケージを作成する

関連項目

チュートリアル: マルチ テナント型のサーバー間認証の使用
単一テナント型のサーバー間認証の使用
サーバー間 (S2S) の認証を使用して Web アプリケーションを作成する
Microsoft Dynamics 365 に接続

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権