Negociación general de seguridad

Una manta de seguridad es un grupo de valores que describen la configuración de seguridad que se aplica a todos los servidores proxy de un proceso o solo a un proxy de interfaz determinado. Una manta de seguridad consta de los siguientes valores:

  • Servicio de autenticación
  • Servicio de autorización
  • Nombre principal
  • Nivel de autenticación
  • Nivel de suplantación
  • Identidad de autenticación
  • Funcionalidades
  • Una lista de control de acceso (ACL) (solo servidores)

La negociación general de seguridad es el proceso que USA COM para elegir la configuración de seguridad de un proxy cuando se crea. Este proceso implica comparar la manta de seguridad del servidor con la manta de seguridad del cliente y usar esos valores para crear una cobertura de seguridad predeterminada adecuada para el proxy. En los párrafos siguientes se explica dónde proceden las mantas de seguridad del cliente y del servidor y se describe cómo COM negocia la cobertura de seguridad del proxy mediante las mantas de seguridad del cliente y del servidor.

El cliente y el servidor pueden llamar a CoInitializeSecurity para especificar sus respectivas mantas de seguridad. Si una aplicación no llama explícitamente a CoInitializeSecurity , COM la llama implícitamente para la aplicación, con los valores predeterminados adecuados. Para obtener más información sobre estos valores predeterminados, vea Valores predeterminados de seguridad COM.

Algunos parámetros de CoInitializeSecurity se aplican cuando la aplicación es un servidor y algunos se aplican cuando la aplicación es un cliente. Cuando la aplicación actúa como servidor, estos parámetros son relevantes: una ACL, una lista de tuplas de nombre principal o servicio de autenticación, servicio de autorización y nivel de autenticación. La llamada de un servidor a CoInitializeSecurity, ya sea implícita o explícita, determina la cobertura de seguridad del servidor, que permanece fija.

Cuando la aplicación actúa como cliente, los siguientes valores pasados a CoInitializeSecurity son relevantes: un nivel de autenticación, un nivel de suplantación, la identidad de autenticación y las funcionalidades. La llamada implícita o explícita de un cliente a CoInitializeSecurity indica la cobertura de seguridad que el cliente quiere.

Cuando se crea un proxy, COM usa los valores especificados por la manta de seguridad del servidor y la manta de seguridad del cliente para negociar una manta de seguridad predeterminada adecuada para el proxy. COM elige un servicio de autenticación que funciona tanto en el cliente como en el servidor. El servicio de autorización y el nombre de entidad de seguridad se eligen para trabajar con el servicio de autenticación. Para el nivel de autenticación, COM elige el mayor de los niveles de autenticación especificados por el cliente y el servidor. El nivel de suplantación y las funcionalidades elegidas por COM son las especificadas por el cliente. La identidad de autenticación es la especificada por el cliente para el servicio de autenticación elegido.

Una vez calculada la cobertura de seguridad predeterminada, sus valores se asignan al proxy recién creado. El cliente puede invalidar la configuración de seguridad del proxy llamando a IClientSecurity::SetBlanket. Los valores especificados en SetBlanket no se negocian ; simplemente se asignan al proxy especificado. Sin embargo, si se pasan parámetros predeterminados (como RPC_C_IMP_LEVEL_DEFAULT) a SetBlanket, COM usa el algoritmo de negociación global de seguridad descrito anteriormente para calcular los parámetros predeterminados.

Seguridad en COM