Desactivar la seguridad de activación

Normalmente, la activación usa la configuración de seguridad predeterminada. Sin embargo, puede controlar la seguridad de activación especificando una estructura COAUTHINFO , que es miembro de la estructura COSERVERINFO que se pasa a las funciones de activación. Si el cliente especifica un nivel de autenticación de RPC_C_AUTHN_LEVEL_NONE en la estructura COAUTHINFO , no se intenta la autenticación. De lo contrario, se intenta la activación segura y, si se produce un error en la autenticación, se produce un error en la activación.

Si el cliente no especifica una estructura COAUTHINFO explícita y, en su lugar, establece el puntero en NULL, COM intentará autenticar al cliente. Si no puede autenticar el cliente, COM comprueba el descriptor de seguridad de permisos de inicio para ver si hay una DACL NULL o una ACL que permite el acceso a Todos. Si esta comprobación se realiza correctamente, se inicia el servidor. Por lo tanto, incluso si el cliente no especifica una estructura COAUTHINFO, puede producirse una activación no segura cuando el servidor lo permita.

Nota

Para permitir que los usuarios de red no autenticados ejecuten una aplicación COM, los roles de aplicación deben incluir el usuario anónimo. A partir de Windows Server 2003, de forma predeterminada, el usuario anónimo no se incluye en el grupo Todos.

 

¿Por qué un cliente desea desactivar explícitamente la seguridad de activación aunque la activación no segura se produzca finalmente si el servidor lo permite? Dado que desactivar explícitamente la seguridad de activación aumenta el rendimiento cuando el cliente no desea o necesita comprobaciones de seguridad.

Se deben realizar las siguientes acciones para desactivar explícitamente la seguridad de activación:

  • El cliente debe especificar un nivel de autenticación de RPC_C_AUTHN_LEVEL_NONE en la estructura COAUTHINFO que es miembro de la estructura COSERVERINFO proporcionada a la función de activación.
  • El cliente debe especificar un nivel de suplantación de RPC_C_IMP_LEVEL_IMPERSONATE en la estructura COAUTHINFO que es miembro de la estructura COSERVERINFO proporcionada a la función de activación. Si no se pasa este valor, obtendrá RPC_S_SERVER_UNAVAILABLE.
  • El servidor debe especificar Todos para los permisos de inicio predeterminados. La manera recomendada de realizar esta tarea es usar Dcomcnfg.exe de la siguiente manera:
    1. Ejecute Dcomcnfg.exe.
    2. En la página Aplicaciones , seleccione la aplicación que representa el servidor. Haga clic en el botón Propiedades (o haga doble clic en la aplicación seleccionada).
    3. En la página de propiedades Seguridad , haga clic en el botón Usar permisos de inicio personalizados .
    4. Haga clic en el botón Editar del área Permisos de inicio .
    5. En el cuadro de diálogo Permisos de valor del Registro , haga clic en el botón Agregar .
    6. Seleccione la entrada para Todos en el cuadro de lista.
    7. En el cuadro de lista Tipo de acceso , elija Permitir inicio.
    8. Haga clic en el botón Aceptar .

Nota

En Windows Server 2003, la funcionalidad de autenticación para la aplicación del sistema COM+ incluye el valor EOAC_DISABLE_AAA. Este valor, que deshabilita las activaciones de activate-as-activator (AAA), se usa en la llamada CoInitializeSecurity al iniciar la aplicación del sistema. Establecer la funcionalidad de autenticación en EOAC_DISABLE_AAA permite que una aplicación que se ejecute con una cuenta con privilegios (como LocalSystem) ayude a evitar que su identidad se use para iniciar componentes que no son de confianza.

 

Desactivar la seguridad de llamadas