プラグイン内のコードを別のユーザーのコンテキストで実行する必要がある場合があります。たとえば、ユーザーに代わって操作を実行する必要があります。
プラグインで偽装を適用するには、登録時と実行時の 2 つの方法があります。
プラグインの登録時
プラグイン ステップを登録するときに、[ユーザーの コンテキストで実行 ] オプションから選択することで、コードの実行時に使用するユーザー アカウントを指定できます。 既定では、これは 呼び出し元ユーザー (アクションを開始したユーザー アカウント) を使用するように設定されています。 この既定のオプションを適用すると、 SdkMessageProcessingStep.ImpersonatingUserId が null または Emptyに設定されます。
詳細情報: プラグインの登録手順
プラグインの実行中
IOrganizationServiceFactory.CreateOrganizationService(Nullable<Guid>)userId パラメーターを設定することで、実行時に登録時に指定された設定をオーバーライドできます。
これは通常、プラグイン ステップの登録で定義されたユーザー アカウントを適用する IExecutionContext.UserId 値に設定されます。
(IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
ステップ登録をオーバーライドする場合は、 IExecutionContext.InitiatingUserId の値を渡して、プラグインの実行の原因となったアクションを開始したユーザー アカウントを使用するサービスを作成できます。
任意の有効なユーザー アカウントから SystemUser.SystemUserId を 指定することもできます。 これは、そのユーザーがプラグインで操作を実行するアクセス許可を持っている限り機能します。