Función RpcImpersonateClient (rpcdce.h)

Un subproceso de servidor que procesa las llamadas a procedimientos remotos de cliente puede llamar a la función RpcImpersonateClient para suplantar al cliente activo.

Sintaxis

RPC_STATUS RpcImpersonateClient(
  RPC_BINDING_HANDLE BindingHandle
);

Parámetros

BindingHandle

Manipulador de enlace en el servidor que representa un enlace a un cliente. El servidor suplanta al cliente indicado por este identificador. Si se especifica un valor de cero, el servidor suplanta al cliente que sirve este subproceso de servidor.

Valor devuelto

Valor Significado
RPC_S_OK
La llamada se realizó correctamente.
RPC_S_NO_CALL_ACTIVE
No hay ningún cliente activo en este subproceso de servidor.
RPC_S_CANNOT_SUPPORT
La función no se admite para el sistema operativo, el transporte o este subsistema de seguridad.
RPC_S_INVALID_BINDING
El identificador de enlace no era válido.
RPC_S_WRONG_KIND_OF_BINDING
Este era el tipo incorrecto de enlace para la operación.
RPC_S_NO_CONTEXT_AVAILABLE
El servidor no tiene permiso para suplantar al cliente.
 
Nota Para obtener una lista de códigos de error válidos, vea Rpc Return Values.
 

Comentarios

En una aplicación multiproceso, si la llamada a RpcImpersonateClient está con un identificador para otro subproceso de cliente, debe llamar a RpcRevertToSelfEx con el identificador de ese subproceso para finalizar la suplantación.

Todas las funciones que suplantan la comprobación para determinar si el autor de la llamada de esta función (el servidor RPC) tiene el privilegio SeImpersonatePrivilege. Si el autor de la llamada tiene SeImpersonatePrivilege o si la identidad autenticada es la misma que la identidad del autor de la llamada de esta función, se permite la suplantación solicitada. De lo contrario, la suplantación solo se realiza en el nivel De identificación.

Windows XP/2000/NT: El privilegio SeImpersonatePrivilege no se admite hasta Windows XP con Service Pack 2 (SP2).

Comentarios de seguridad

Si se produce un error en la llamada a RpcImpersonateClient por cualquier motivo, la conexión de cliente no se suplanta y la solicitud de cliente se realiza en el contexto de seguridad del proceso. Si el proceso se ejecuta como una cuenta con privilegios elevados, como LocalSystem o como miembro de un grupo administrativo, es posible que el usuario pueda realizar acciones que, de lo contrario, no se les permita. Por lo tanto, es importante comprobar siempre el valor devuelto de la llamada y, si se produce un error, generar un error; no continúe la ejecución de la solicitud de cliente.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado rpcdce.h
Library Rpcrt4.lib
Archivo DLL Rpcrt4.dll

Consulte también

Suplantación de cliente

RpcRevertToSelf