Método IServerSecurity::ImpersonateClient (objidl.h)
Permite a un servidor suplantar a un cliente durante la duración de una llamada.
Sintaxis
HRESULT ImpersonateClient();
Valor devuelto
Si el método se realiza correctamente, el valor devuelto se S_OK. De lo contrario, es E_FAIL.
Comentarios
Normalmente, un método se ejecuta en un subproceso que usa el token de acceso del proceso. Sin embargo, al suplantar a un cliente, el servidor se ejecuta en el contexto de seguridad del cliente para que el servidor tenga acceso a los recursos a los que tiene acceso el cliente. Cuando se necesita suplantación, el servidor llama al método ImpersonateClient para que un token de acceso que represente las credenciales del cliente se asigne al subproceso actual. Este token de subproceso se usa para las comprobaciones de acceso. RevertToSelf restaura el token de acceso del subproceso actual.
Lo que el servidor puede hacer en nombre del cliente depende del nivel de suplantación establecido por el cliente, que se especifica mediante una de las constantes de nivel de suplantación. El servidor puede suplantar al cliente en una llamada cifrada en el nivel de identificación, suplantación o delegado. Para obtener información sobre estos niveles de suplantación, vea Niveles de suplantación.
La identidad presentada a un servidor llamado durante la suplantación depende del tipo de valor de ocultación, si existe, establecido por el cliente. Para más información, consulte Ocultamiento.
Al final de cada llamada al método, COM llamará a RevertToSelf si la aplicación no lo hace.
Tradicionalmente, la información de suplantación no está anidada: la última llamada a cualquier mecanismo de suplantación invalida cualquier suplantación anterior. Sin embargo, en el modelo de apartamento, la suplantación se mantiene durante las llamadas anidadas. Por lo tanto, si el servidor A recibe una llamada de B, suplanta, llama a C, recibe una llamada de D, suplanta, revierte y recibe la respuesta de C, el token de suplantación se volverá a establecer en B, no en A.
Para obtener información sobre el uso de la suplantación con llamadas asincrónicas, vea Suplantación y llamadas asincrónicas.
Requisitos
Requisito | Value |
---|---|
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 | objidl.h (incluya ObjIdl.h) |