Désactivation de la sécurité d’activation

Normalement, l’activation utilise les paramètres de sécurité par défaut. Toutefois, vous pouvez contrôler la sécurité de l’activation en spécifiant une structure COAUTHINFO , qui est membre de la structure COSERVERINFO qui est passée aux fonctions d’activation. Si le client spécifie un niveau d’authentification de RPC_C_AUTHN_LEVEL_NONE dans la structure COAUTHINFO , l’authentification n’est pas tentée. Sinon, l’activation sécurisée est tentée et, si l’authentification échoue, l’activation échoue.

Si le client ne spécifie pas de structure COAUTHINFO explicite et définit plutôt le pointeur sur NULL, COM tente d’authentifier le client. S’il ne peut pas authentifier le client, COM vérifie le descripteur de sécurité d’autorisation de lancement pour voir s’il existe une liste DACL NULL ou une liste de contrôle d’accès qui autorise l’accès à Tout le monde. Si cette case activée réussit, le serveur est lancé. Par conséquent, même si le client ne spécifie pas de structure COAUTHINFO, une activation non sécurisée peut avoir lieu lorsque le serveur l’autorise.

Notes

Pour permettre aux utilisateurs réseau non authentifiés d’exécuter une application COM, les rôles d’application doivent inclure l’utilisateur anonyme. À compter de Windows Server 2003, par défaut, l’utilisateur anonyme n’est pas inclus dans le groupe Tout le monde.

 

Pourquoi un client souhaite-t-il désactiver explicitement la sécurité de l’activation, même si une activation non sécurisée finira par avoir lieu si le serveur l’autorise ? Parce que la désactivation explicite de la sécurité d’activation augmente les performances lorsque le client ne souhaite pas ou n’a pas besoin de vérifications de sécurité.

Les opérations suivantes doivent être effectuées pour désactiver explicitement la sécurité de l’activation :

  • Le client doit spécifier un niveau d’authentification de RPC_C_AUTHN_LEVEL_NONE dans la structure COAUTHINFO qui est membre de la structure COSERVERINFO fournie à la fonction d’activation.
  • Le client doit spécifier un niveau d’emprunt d’identité de RPC_C_IMP_LEVEL_IMPERSONATE dans la structure COAUTHINFO qui est membre de la structure COSERVERINFO fournie à la fonction d’activation. Si cette valeur n’est pas passée, vous obtenez RPC_S_SERVER_UNAVAILABLE.
  • Le serveur doit spécifier Tout le monde pour les autorisations de lancement par défaut. La méthode recommandée pour effectuer cette tâche consiste à utiliser Dcomcnfg.exe comme suit :
    1. Exécutez Dcomcnfg.exe.
    2. Dans la page Applications , sélectionnez l’application qui représente le serveur. Cliquez sur le bouton Propriétés (ou double-cliquez sur l’application sélectionnée).
    3. Dans la page des propriétés Sécurité , cliquez sur le bouton Utiliser les autorisations de lancement personnalisées .
    4. Cliquez sur le bouton Modifier dans la zone Autorisations de lancement .
    5. Dans la boîte de dialogue Autorisations de valeur de Registre , cliquez sur le bouton Ajouter .
    6. Sélectionnez l’entrée pour Tout le monde dans la zone de liste.
    7. Dans la zone de liste Type d’accès , choisissez Autoriser le lancement.
    8. Cliquez sur le bouton OK .

Notes

Dans Windows Server 2003, la fonctionnalité d’authentification de l’application système COM+ inclut la valeur EOAC_DISABLE_AAA. Cette valeur, qui désactive les activations d’activateur (AAA), est utilisée dans l’appel CoInitializeSecurity lors du lancement de l’application système. La définition de la fonctionnalité d’authentification sur EOAC_DISABLE_AAA permet à une application qui s’exécute sous un compte privilégié (tel que LocalSystem) d’empêcher son identité d’être utilisée pour lancer des composants non approuvés.

 

Désactivation de la sécurité des appels