Compartir a través de


Suplantar a un usuario

En ocasiones, necesita tener código en un complemento que se ejecute en el contexto de otro usuario, por ejemplo, para realizar una operación en su nombre.

Hay dos formas de aplicar suplantación en complementos: en el registro o la ejecución.

En el registro de complementos

Al registrar una paso de complemento puede especificar una cuenta de usuario para usar cuando el código se ejecuta eligiendo desde la opción Ejecutar en contexto de usuario. De forma predeterminada esta opción se establece para usar el Usuario que llama, que es la cuenta de usuario que inició la acción. Cuando se aplica esta opción predeterminada, el SdkMessageProcessingStep.ImpersonatingUserId se establecerá como nulo o Empty.

Más información: Registrar paso de complemento.

Durante la ejecución de complemento

Puede reemplazar el valor especificado en el registro en tiempo de ejecución estableciendo el parámetro IOrganizationServiceFactory.CreateOrganizationService(Nullable<Guid>) userId.

Este normalmente se establece con el valor IExecutionContext.UserId que aplicará la cuenta de usuario definida por el registro de paso de complemento.

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

Si desea reemplazar el registro del paso puede pasar el valor del IExecutionContext.InitiatingUserId para tener un servicio que usará la cuenta de usuario que inició la acción que produjo la ejecución del complemento.

También puede proporcionar el SystemUser.SystemUserId desde cualquier cuenta de usuario válida. Esto funcionará siempre que el usuario tenga permisos para realizar las operaciones en el complemento.

Vea también

Complementos
Escribir un complemento

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).