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 |
---|---|
|
La llamada se realizó correctamente. |
|
No hay ningún cliente activo en este subproceso de servidor. |
|
La función no se admite para el sistema operativo, el transporte o este subsistema de seguridad. |
|
El identificador de enlace no era válido. |
|
Este era el tipo incorrecto de enlace para la operación. |
|
El servidor no tiene permiso para suplantar al cliente. |
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 |