Suplantación de cliente (autorización)
suplantación es la capacidad de un subproceso para ejecutarse con información de seguridad diferente al proceso que posee el subproceso. Normalmente, un subproceso de una aplicación de servidor suplanta a un cliente. Esto permite que el subproceso del servidor actúe en nombre de ese cliente para acceder a objetos en el servidor o validar el acceso a los propios objetos del cliente.
La API de Microsoft Windows proporciona las siguientes funciones para iniciar una suplantación:
- Una aplicación de servidor DDE puede llamar a la funciónDdeImpersonateClient para suplantar a un cliente.
- Un servidor de canalización con nombre puede llamar a la funciónImpersonateNamedPipeClient.
- Puede llamar a la funciónImpersonateLoggedOnUser para suplantar el contexto de seguridad de un token de acceso de un usuario que ha iniciado sesión.
- La función ImpersonateSelf permite que un subproceso genere una copia de su propio token de acceso. Esto resulta útil cuando una aplicación necesita cambiar el contexto de seguridad de un único subproceso. Por ejemplo, a veces solo un subproceso de un proceso debe habilitar un privilegio .
- Puede llamar a la funciónSetThreadToken para que el subproceso de destino se ejecute en el contexto de seguridad de un token de suplantación de especificado.
- Una aplicación de servidor de llamada a procedimiento remoto (RPC) de Microsoft puede llamar a la función de RpcImpersonateClient para suplantar a un cliente.
- Un paquete de seguridad o servidor de aplicaciones puede llamar a la funciónimpersonateSecurityContextpara suplantar a un cliente.
Para la mayoría de estas suplantaciones, el subproceso de suplantación puede revertir a su propio contexto de seguridad llamando a la funciónRevertToSelf. La excepción es la suplantación RPC, en la que la aplicación de servidor RPC llama a RpcRevertToSelf o RpcRevertToSelfEx para revertir a su propio contexto de seguridad.
Nota: Si estás suplantando a un usuario desde un servicio Win32 y estás llamando a las API que dependen de variables de entorno de usuario, es posible que debas llamar a RegDisablePredefinedCache antes de realizar la suplantación.