Niveles de suplantación

Si la suplantación se realiza correctamente, significa que el cliente ha acordado permitir que el servidor sea el cliente hasta cierto punto. Los distintos grados de suplantación se denominan niveles de suplantación y indican la cantidad de autoridad que se proporciona al servidor cuando se suplanta al cliente.

Actualmente, hay cuatro niveles de suplantación: anónimos, identificados, suplantados y delegados. En la lista siguiente se describe brevemente cada nivel de suplantación:

anónimo (RPC_C_IMP_LEVEL_ANONYMOUS)

El cliente es anónimo para el servidor. El proceso de servidor puede suplantar al cliente, pero el token de suplantación no contiene información sobre el cliente. Este nivel solo se admite en el transporte de comunicación entre procesos local. Todos los demás transportes promueven silenciosamente este nivel para identificarlo.

identificar (RPC_C_IMP_LEVEL_IDENTIFY)

Nivel predeterminado del sistema. El servidor puede obtener la identidad del cliente y suplantarlo para realizar comprobaciones ACL.

suplantar (RPC_C_IMP_LEVEL_IMPERSONATE)

El servidor puede suplantar el contexto de seguridad del cliente mientras actúa en su nombre. El servidor puede obtener acceso a los recursos locales como el cliente. Si el servidor es local, puede acceder a los recursos de red como cliente. Si el servidor es remoto, solo puede acceder a los recursos que se encuentran en el mismo equipo que el servidor.

delegado (RPC_C_IMP_LEVEL_DELEGATE)

Nivel de suplantación más completo. Cuando se selecciona este nivel, el servidor (ya sea local o remoto) puede suplantar el contexto de seguridad del cliente mientras actúa en su nombre. Durante la suplantación, las credenciales del cliente (tanto locales como de red) se pueden pasar a cualquier número de equipos.

Para que la suplantación funcione en el nivel de delegado, se deben cumplir los siguientes requisitos:

  • El cliente debe establecer el nivel de suplantación en RPC_C_IMP_LEVEL_DELEGATE.
  • La cuenta de cliente no debe marcarse como "La cuenta es confidencial y no se puede delegar" en el servicio de Active Directory.
  • La cuenta de servidor debe marcarse con el atributo "Trusted for delegation" en el servicio active Directory.
  • Los equipos que hospedan el cliente, el servidor y los servidores "descendentes" deben ejecutarse en un dominio.

Al elegir el nivel de suplantación, el cliente indica al servidor cuánto puede llegar a suplantar al cliente. El cliente establece el nivel de suplantación en el proxy que usa para comunicarse con el servidor.

Establecimiento del nivel de suplantación

Hay dos maneras de establecer el nivel de suplantación:

Para establecer el nivel de suplantación, pase un valor de RPC_C_IMP_LEVEL_xxx adecuado a CoInitializeSecurity o CoSetProxyBlanket a través del parámetro dwImpLevel .

Los distintos servicios de autenticación admiten la suplantación de nivel de delegado en diferentes extensiones. Por ejemplo, NTLMSSP admite suplantación de nivel de delegado entre subprocesos y entre procesos, pero no entre equipos. Por otro lado, el protocolo Kerberos admite la suplantación de nivel delegado a través de los límites del equipo, mientras que Schannel no admite ninguna suplantación en el nivel de delegado. Si tiene un proxy en el nivel de suplantación y desea establecer el nivel de suplantación para delegar, debe llamar a SetBlanket con las constantes predeterminadas para cada parámetro excepto el nivel de suplantación. COM elegirá NTLM localmente y el protocolo Kerberos de forma remota (cuando el protocolo Kerberos funcionará).

Delegación y suplantación