プラグインの偽装

 

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

偽装は、Microsoft Dynamics 365 システム ユーザーの代わりにビジネス ロジック (カスタム コード) を実行して、そのユーザーに必要な機能またはサービスを提供する際に使用します。 Web サービス メソッド呼び出しやデータ アクセスなど、プラグイン内で実行されたビジネス ロジックは、偽装ユーザーのセキュリティ特権によって制御されます。

サンドボックスまたは非同期サービスによって実行されないプラグインは、[CRMAppPool のプロパティ] ダイアログ ボックスの [識別] タブで指定されているセキュリティ アカウントで実行されます。 ダイアログ ボックスを開くには、インターネット インフォメーション サービス (IIS) マネージャーの CRMAppPool アプリケーション プールを右クリックして、次にショートカット メニューの [プロパティ] をクリックします。 既定では CRMAppPool は Network Service アカウントの ID を使用しますが、システム管理者はインストールの間にこれを変更できます。CRMAppPool ID を Network Service 以外のシステム アカウントに変更する場合は、新しい ID アカウントを Active Directory の PrivUserGroup グループに追加する必要があります。詳細:「TechNet: Microsoft Dynamics CRM サービス アカウントまたは AppPool ID の変更」を参照してください。

次に、ユーザーを偽装する際に使用できる 2 つの方法について説明しています。

プラグイン登録時の偽装

プラグインでシステム ユーザーを偽装するには、プラグインの登録時に偽装ユーザーを指定します。 プログラムでプラグインを登録するときに、SdkMessageProcessingStep.ImpersonatingUserId 属性が特定の Microsoft Dynamics 365 システム ユーザーに設定されていると、プラグインによる Web サービス呼び出しが偽装ユーザーの代わりに実行されます。 プラグインの登録時に、ImpersonatingUserIdnull または Guid.Empty に設定されている場合は、呼び出し元/ログオン ユーザーまたは標準の "system" ユーザーが偽装ユーザーになります。

呼び出し元/ログオン ユーザーと "system" ユーザーのどちらが偽装に使用されるかは、パイプラインによって処理されている要求に依存します。この点については、この SDK ドキュメントの範囲を超えているので説明は省略します。 "system" ユーザーの詳細については、次のトピックを参照してください。

注意

SDK のダウンロードで提供されるサンプルのプラグイン登録ツールを使用してプラグインを登録すると、[Run in User’s Context] ドロップダウン メニューで別のユーザーを選択しない限り、既定で、呼び出しユーザーまたはログオン ユーザーのアカウントで実行されます。 ツールのサンプル コードの詳細については、SDK パッケージの SDK\Tools\PluginRegistration フォルダーにあるツールのコードを参照してください。Microsoft Dynamics CRM SDK パッケージをダウンロードします。

プラグイン実行時の偽装

プラグインの登録中に定義された偽装は、プラグインの実行時に変更できます。 プラグインの登録時に偽装が定義されなかったとしても、プラグイン コードから偽装を使用することが可能です。 以降の部分では、プラグインで Web サービス メソッドを呼び出す際の偽装において、中心的な役割を持つ主要なプロパティとメソッドについて取り上げます。

偽装ユーザーの ID は、実行時に UserId プロパティを介してプラグインに渡されます。 このプロパティには、次の表に示した 3 種類の値のいずれかを設定できます。

UserId の値

条件

呼び出し元ユーザーまたは "system" ユーザー

プラグインの登録時に、SdkMessageProcessingStep.ImpersonatingUserId 属性が null または Guid.Empty に設定されている場合。

偽装ユーザー

プラグインの登録時に、ImpersonatingUserId プロパティが有効なシステム ユーザー ID に設定されている場合。

"system" ユーザー

現在のパイプラインが、サービス メソッド呼び出しに対する直接の応答ではなく、プラットフォームによって実行された場合。

実行コンテキストの InitiatingUserId プロパティには、最終的にプラグインの実行を引き起こした、サービス メソッドの呼び出し元のシステム ユーザーの ID が格納されます。

重要

プラグインがオフラインで実行されている場合、そのプラグインによって作成されたすべてのエンティティは、ログオン ユーザーによって所有されます。 オフライン モードでは、プラグインの偽装はサポートされません。

関連項目

プラグインの開発
プラグインの登録および展開
プラグインに渡されるデータ コンテキストについて
もう一方のユーザーの偽装

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権