File d’attente des requêtes nommées

La fonctionnalité de file d’attente de demandes nommée de l’API HTTP Server version 2.0 permet à plusieurs applications, fonctionnant sous des processus et des comptes d’utilisateur distincts, d’accéder à la file d’attente des demandes. La file d’attente des demandes est ouverte par nom et sécurisée à l’aide de listes Access Control (ACL) pour garantir que les applications ne peuvent pas accéder aux données des autres. Un seul processus crée la file d’attente des demandes et accorde à d’autres processus l’autorisation d’utiliser la file d’attente des demandes. Ainsi, d’autres processus sur l’ordinateur accèdent à la file d’attente des demandes avec le privilège minimum nécessaire pour traiter les demandes. Les dommages possibles au service HTTP, en raison de vulnérabilités dans le code tiers, sont réduits lorsque les applications s’exécutent avec des privilèges minimum.

La file d’attente de requêtes nommée est créée avec la fonction HttpCreateRequestQueue . Lorsque la file d’attente des demandes est créée, l’application spécifie la liste de contrôle d’accès dans le paramètre pSecurityAttribute . La liste de contrôle d’accès, qui ne peut être définie qu’au moment de la création de la file d’attente des demandes, permet aux processus de travail d’ouvrir la file d’attente des requêtes, de recevoir des demandes et d’envoyer des réponses. Par défaut, les processus ne sont pas autorisés à ouvrir une file d’attente de demandes, sauf s’ils ont reçu l’autorisation dans la liste de contrôle d’accès. Les applications ne nécessitent pas de privilèges d’administration pour créer la file d’attente des demandes.

La file d’attente des demandes doit être créée avec un nom spécifié dans le paramètre pName de HttpCreateRequestQueue pour que d’autres processus ouvrent la file d’attente des demandes. Si pName a la valeur NULL, une file d’attente de demandes sans nom est créée et aucun autre processus ne peut l’ouvrir.

Processus du créateur et du contrôleur

Lorsque la file d’attente de requêtes est créée, l’application peut l’ouvrir en tant que processus de contrôleur ou processus créateur. Le contrôleur et le créateur traitent tous deux en tant qu’administrateurs pour la file d’attente des requêtes, mais le contrôleur n’effectue pas d’opérations d’E/S sur celle-ci. L’application indique qu’il s’agit d’un processus de contrôleur lorsque la file d’attente des requêtes est créée en spécifiant HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER dans le paramètre Flags de HttpCreateRequestQueue. Si l’indicateur HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER n’est pas défini, l’application est un processus créateur.

La liste suivante contient les tâches effectuées par le processus de contrôleur et le processus créateur :

  • Créez la file d’attente des requêtes et spécifiez le nom.
  • Configurez la file d’attente des requêtes à l’aide de la fonction HttpSetRequestQueueProperty .
  • Interrogez les paramètres de configuration de la file d’attente des requêtes à l’aide de la fonction HttpQueryRequestQueueProperty .
  • Créez des groupes d’URL et les associe à une file d’attente de requêtes.
  • Définissez la liste de contrôle d’accès en spécifiant les processus de travail autorisés à recevoir des E/S sur la file d’attente des demandes.
  • Appelez HttpWaitForDemandStart pour retarder l’instanciation des processus de travail jusqu’à ce que la première requête arrive dans la file d’attente des requêtes.

En plus de ces tâches, le processus créateur peut également effectuer des opérations d’E/S sur la file d’attente des demandes.

Processus de travail

Un processus de travail peut ouvrir une file d’attente de requêtes existante uniquement s’il a été autorisé à y accéder dans la liste de contrôle d’accès. Les processus de travail fonctionnant avec des privilèges minimum peuvent ouvrir une file d’attente de requêtes et y effectuer des E/S. Les applications ouvrent une file d’attente de requêtes existante en appelant HttpCreateRequestQueue avec le HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING dans le paramètre Flags et le nom de la file d’attente des requêtes dans le paramètre pName .

Le processus de travail exécute les fonctions suivantes :

  • Recevoir des demandes et envoyer des réponses dans la file d’attente des demandes.
  • Ouvrez une file d’attente de requêtes existante par nom. Le handle de la file d’attente des requêtes retournée au processus de travail ne peut pas être utilisé pour configurer la file d’attente des demandes.
  • Interrogez les paramètres de configuration de la file d’attente des requêtes.

Le diagramme suivant montre le modèle de processus de travail pour les files d’attente de requêtes. La file d’attente des demandes peut avoir plusieurs processus de travail qui traitent les E/S, et un seul processus créateur qui configure la file d’attente des demandes.

Modèle de processus de travail pour les files d’attente de requêtes