Condividi tramite


Coda richiesta denominata

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

La coda richiesta denominata viene creata con la funzione HttpCreateRequestQueue . Quando viene creata la coda della richiesta, l'applicazione specifica l'ACL nel parametro pSecurityAttribute . L'elenco di controllo di accesso, che può essere impostato solo quando viene creata la coda della richiesta, consente ai processi di lavoro di aprire la coda della richiesta, 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'elenco di controllo di accesso. Le applicazioni non richiedono privilegi amministrativi per creare la coda delle richieste.

La coda di richiesta deve essere creata con un nome specificato nel parametro pName di HttpCreateRequestQueue per altri processi per aprire la coda della richiesta. Se pName è NULL, viene creata una coda richiesta non denominata e nessun altro processo può aprirlo.

Processi creatore e controller

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

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

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

Oltre a queste attività, il processo di creazione può anche eseguire operazioni di I/O nella coda della richiesta.

Processi di lavoro

Un processo di lavoro può aprire una coda di richieste esistente solo se sono stati concessi l'accesso all'oggetto 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 richiesta esistente chiamando HttpCreateRequestQueue con il HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING nel parametro Flags e il nome della coda della richiesta nel parametro pName .

Il processo di lavoro esegue le funzioni seguenti:

  • Ricevere richieste e inviare risposte nella coda della richiesta.
  • Aprire una coda di richiesta esistente in base al nome. Impossibile usare l'handle alla coda della richiesta restituita al processo di lavoro per configurare la coda della richiesta.
  • Eseguire una query sui parametri di configurazione della coda delle richieste.

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

modello di processo di lavoro per le code di richiesta