Delegación y suplantación

En escenarios de cliente/servidor, es habitual que un servidor llame a otro servidor para realizar alguna tarea en nombre de un cliente. La situación en la que se concede a un servidor la autoridad para actuar en nombre de un cliente se denomina delegación.

Desde el punto de vista de la seguridad, surgen dos problemas relacionados con la delegación:

  • ¿Qué debe permitirse hacer el servidor al actuar en nombre del cliente?
  • ¿Qué identidad presenta el servidor cuando llama a otros servidores en nombre de un cliente?

Para solucionar estos problemas, COM proporciona la siguiente funcionalidad. El cliente puede establecer un nivel de suplantación que determine en qué medida el servidor podrá actuar como cliente. Si el cliente concede suficiente autoridad al servidor, el servidor puede suplantar (fingir ser) al cliente. Al suplantar al cliente, el servidor solo tiene acceso a los objetos o recursos que el cliente tiene permiso para usar. El servidor, que actúa como cliente, también puede habilitar el ocultamiento para enmascarar su propia identidad y proyectar la identidad del cliente en llamadas a otros componentes COM.

Diagrama que muestra cómo el servidor actúa como el cliente puede habilitar el ocultamiento.

Considere el escenario que se muestra en la ilustración anterior, donde A y B son procesos en un equipo diferente de C. Procesar A llama a B y B llama a C. El cliente A establece el nivel de suplantación. B establece la funcionalidad de ocultación. Si A establece un nivel de suplantación que permite la suplantación, B puede suplantar A al llamar a C en nombre de A. La identidad que se presenta para procesar C será la identidad de A o la identidad de B, en función de si B habilitó el ocultamiento. Si el ocultamiento está habilitado, la identidad presentada para procesar C será la de A. Si el ocultamiento no está habilitado, la identidad de B se presentará a C.

Para obtener más información, vea los temas siguientes: