Suplantación de cliente
La suplantación es útil en un entorno informático distribuido cuando los servidores deben pasar solicitudes de cliente a otros procesos de servidor o al sistema operativo. En este caso, un servidor suplanta el contexto de seguridad del cliente. A continuación, otros procesos de servidor pueden controlar la solicitud como si el cliente original lo hiciera.
Por ejemplo, un cliente realiza una solicitud al servidor A. Si el servidor A debe consultar al servidor B para completar la solicitud, el servidor A suplanta el contexto de seguridad del cliente y realiza la solicitud al servidor B en nombre del cliente. El servidor B usa el contexto de seguridad del cliente original, en lugar de la identidad de seguridad del servidor A, para determinar si se debe completar la tarea.
El servidor llama a RpcImpersonateClient para sobrescribir la seguridad del subproceso del servidor con el contexto de seguridad del cliente. Una vez completada la tarea, el servidor llama a RpcRevertToSelf o RpcRevertToSelfEx para restaurar el contexto de seguridad definido para el subproceso del servidor.
Al enlazar, el cliente puede especificar información de calidad de servicio sobre la seguridad, que especifica cómo el servidor puede suplantar al cliente. Por ejemplo, una de las opciones de configuración permite al cliente especificar que el servidor no puede suplantarlo. Para obtener más información, consulte Calidad de servicio.
La capacidad de llamar a otros servidores mientras se suplanta al cliente original se denomina delegación. Cuando se usa la delegación, un servidor que suplanta a un cliente puede llamar a otro servidor y puede realizar llamadas de red con las credenciales del cliente. Es decir, desde la perspectiva del segundo servidor, las solicitudes procedentes del primer servidor son indistinguibles de las solicitudes procedentes del cliente. No todos los proveedores de seguridad admiten la delegación. Microsoft envía solo un proveedor de seguridad que admite la delegación: Kerberos.
La delegación puede ser una funcionalidad peligrosa debido a los privilegios que proporciona el cliente al servidor durante una llamada a procedimiento remoto. Este es el motivo por el que Kerberos permite llamadas con el nivel de suplantación de delegación solo si se solicita autenticación mutua. Los administradores de dominio pueden limitar los equipos a los que se realizan llamadas con el nivel de suplantación de delegación para evitar que los clientes no especificados realicen llamadas a servidores que puedan abusar de sus credenciales.
Existe una excepción a la regla de delegación: llamadas mediante ncalrpc. Cuando se realizan estas llamadas, el servidor obtiene derechos de delegación, incluso si se especifica un nivel de suplantación de suplantación. Es decir, un servidor puede llamar a otros servidores en nombre del cliente. Esto solo funciona para una llamada remota. Por ejemplo, si el cliente A llama a lb del servidor local mediante el servidor local ncalrpc lb puede suplantar y llamar a RB del servidor remoto. RB podrá actuar en nombre del cliente A, pero solo en el equipo remoto en el que se ejecuta RB. No puede realizar otra llamada de red al equipo remoto C a menos que LB especifique un nivel de suplantación de delegado cuando llamó a RB.
Nota
El término suplantación representa dos significados superpuestos. El primer significado de la suplantación es el proceso general de actuar en nombre de un cliente. El segundo significado es el nivel de suplantación específico denominado suplantación. El contexto del texto generalmente aclara el significado.