Emprunter l’identité d’un utilisateur
Parfois vous avez besoin du code dans un plug-in pour exécuter dans le contexte d’un autre utilisateur, par exemple pour effectuer une opération à sa place.
Il existe deux manières d’appliquer l’emprunt d’identité aux plug-ins : à l’enregistrement ou pendant l’exécution.
À l’enregistrement du plug-in
Lorsque vous enregistrez une étape du plug-in, vous pouvez spécifier un compte d’utilisateur à utiliser lors de l’exécution du code en choisissant parmi les options Exécuter dans le contexte utilisateur. Par défaut, cette option est définie pour utiliser Utilisateur appelant, qui est le compte d’utilisateur à l’origine de l’action. Lorsque cette option par défaut est appliquée, SdkMessageProcessingStep.ImpersonatingUserId sera défini sur null ou Empty.
Pour plus d’informations, voir : Enregistrer une étape du plug-in.
Pendant l’exécution du plug-in
Vous pouvez remplacer le paramètre spécifié à l’enregistrement par celui spécifié au moment de l’exécution en définissant le paramètre IOrganizationServiceFactory.CreateOrganizationService(Nullable<Guid>) userId
.
Il est généralement défini sur la valeur IExecutionContext.UserId qui appliquera le compte d’utilisateur défini par l’enregistrement de l’étape du plug-in.
(IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
Si vous souhaitez remplacer l’enregistrement de l’étape, vous pouvez transmettre la valeur de IExecutionContext.InitiatingUserId pour que le service utilise le compte d’utilisateur à l’origine de l’action qui a déclenché l’exécution du plug-in.
Vous pouvez aussi fournir la valeur SystemUser.SystemUserId à partir d’un compte d’utilisateur valide. Cette valeur sera valide tant que cet utilisateur sera autorisé à exécuter les opérations dans le plug-in.
Voir aussi
Notes
Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)
Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).