Condividi tramite


Coda di richieste denominate

La funzionalità della coda di richieste denominata HTTP Server versione 2.0 consente a più applicazioni, che operano in processi e account utente separati, di accedere alla coda delle richieste. La coda delle richieste viene aperta per nome e protetta tramite elenchi di controllo di accesso (ACL) per garantire che le applicazioni non siano in grado di accedere ad altri dati. Un singolo processo crea la coda delle richieste e concede l'autorizzazione ad altri processi per usare la coda delle richieste. Di conseguenza, altri processi nel computer accedono alla coda delle richieste con il privilegio minimo necessario per gestire le richieste. Il possibile danno al servizio HTTP, a causa di vulnerabilità nel codice di terze parti, viene ridotto al minimo quando le applicazioni eseguono con privilegi minimi.

La coda di richieste denominata viene creata con la funzionehttpCreateRequestQueue. Quando viene creata la coda di richieste, l'applicazione specifica l'ACL nel parametro pSecurityAttribute. L'ACL, che può essere impostato solo quando viene creata la coda delle richieste, consente ai processi di lavoro di aprire la coda delle richieste, ricevere le richieste e inviare risposte. Per impostazione predefinita, i processi non possono aprire una coda di richieste, a meno che non siano state concesse autorizzazioni nell'ACL. Le applicazioni non richiedono privilegi amministrativi per creare la coda delle richieste.

La coda delle richieste deve essere creata con un nome specificato nel parametro pName di HttpCreateRequestQueue per consentire ad altri processi di aprire la coda delle richieste. Se pName è NULL, viene creata una coda di richieste senza nome e nessun altro processo può aprirlo.

Processi creator e controller

Quando viene creata la coda delle richieste, l'applicazione può aprirla come processo controller o processo creatore. Il controller e l'autore elaborano entrambi come amministratori per la coda delle richieste, ma il controller non esegue operazioni di I/O su di esso. L'applicazione indica che si tratta di un processo controller quando viene creata la coda delle richieste specificando HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER nel parametro flag di HttpCreateRequestQueue. Se il flag HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER non è impostato, l'applicazione è un processo creatore.

L'elenco seguente contiene le attività eseguite dal processo del controller e dal processo di creazione:

  • Creare la coda delle richieste e specificare il nome.
  • Configurare la coda delle richieste usando la funzionehttpSetRequestQueueProperty.
  • Eseguire una query sui parametri di configurazione della coda delle richieste usando la funzione HttpQueryRequestQueueProperty.
  • Creare gruppi di URL e associarli a una coda di richieste.
  • Impostare l'ACL specificando i processi di lavoro autorizzati a ricevere I/O nella coda delle richieste.
  • Chiamare HttpWaitForDemandStart per ritardare la creazione di istanze dei processi di lavoro fino all'arrivo della prima richiesta nella coda delle richieste.

Oltre a queste attività, il processo creatore può anche eseguire operazioni di I/O nella coda delle richieste.

Processi di lavoro

Un processo di lavoro può aprire una coda di richieste esistente solo se gli è stato concesso l'accesso nell'elenco di controllo di accesso. I processi di lavoro che operano con privilegi minimi possono aprire una coda di richieste ed eseguirne l'I/O. Le applicazioni aprono una coda di richieste esistente chiamando HttpCreateRequestQueue con il HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING nel parametro Flag e il nome della coda delle richieste nel parametro pName.

Il processo di lavoro esegue le funzioni seguenti:

  • Ricevere richieste e inviare risposte nella coda delle richieste.
  • Aprire una coda di richieste esistente in base al nome. L'handle della coda di richieste restituito al processo di lavoro non può essere usato per configurare la coda delle richieste.
  • Eseguire una query sui parametri di configurazione della coda delle richieste.

Il diagramma seguente illustra il modello di processo di lavoro per le code delle richieste. La coda delle richieste può avere diversi processi di lavoro che elaborano le operazioni di I/O e un processo creatore che configura la coda delle richieste.

modello di processo di lavoro per le code di richieste