Partager via


Emprunter l’identité d’un utilisateur

Parfois, vous avez besoin du code dans un plug-in pour s’exécuter dans le contexte d’un autre utilisateur, par exemple pour effectuer une opération en son nom.

Il existe deux manières d’appliquer l’emprunt d’identité aux plug-ins : à l’enregistrement ou pendant l’exécution.

Lors de l’inscription du plug-in

Lorsque vous inscrivez une étape de plug-in, vous pouvez spécifier un compte d’utilisateur à utiliser lorsque le code est exécuté en choisissant l’option Exécuter dans le contexte de l’utilisateur . Par défaut, il est défini pour utiliser l’utilisateur appelant, qui est le compte d’utilisateur qui a lancé l’action. Lorsque cette option par défaut est appliquée, le SdkMessageProcessingStep.ImpersonatingUserId est défini sur Null ou Empty.

Plus d’informations : Étape d'enregistrement du plugin

Pendant l’exécution du plug-in

Vous pouvez remplacer le paramètre spécifié lors de l’inscription au moment de l’exécution en définissant le IOrganizationServiceFactoryparamètre .CreateOrganizationService(Nullable<Guid>)userId

Il s'agit généralement de la valeur IExecutionContext.UserId Elle applique le compte d'utilisateur défini lors de l'inscription de l'étape du plug-in.

(IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
    IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

Si vous souhaitez outrepasser l'enregistrement d'une étape, vous pouvez transmettre la valeur du IExecutionContext.InitiatingUserId pour obtenir un service qui utilisera le compte utilisateur ayant initié l'action ayant provoqué l'exécution du plug-in.

Vous pouvez également fournir SystemUser.SystemUserId à partir de n’importe quel compte d’utilisateur valide. Cela fonctionnera tant que l’utilisateur dispose des autorisations nécessaires pour effectuer les opérations dans le plug-in.

Voir aussi

Modules d’extension
Écrire un plug-in