Cola de solicitudes con nombre

La característica de cola de solicitudes denominada API de HTTP Server versión 2.0 permite varias aplicaciones, que funcionan con procesos independientes y cuentas de usuario, acceso a la cola de solicitudes. La cola de solicitudes se abre por nombre y se protege mediante listas de Access Control (ACL) para asegurarse de que las aplicaciones no puedan acceder a los datos entre sí. Un único proceso crea la cola de solicitudes y concede permiso a otros procesos para usar la cola de solicitudes. Por lo tanto, otros procesos del equipo acceden a la cola de solicitudes con los privilegios mínimos necesarios para atender las solicitudes. El posible daño al servicio HTTP, debido a vulnerabilidades en código de terceros, se minimiza cuando las aplicaciones se ejecutan con privilegios mínimos.

La cola de solicitudes con nombre se crea con la función HttpCreateRequestQueue . Cuando se crea la cola de solicitudes, la aplicación especifica la ACL en el parámetro pSecurityAttribute . La ACL, que solo se puede establecer cuando se crea la cola de solicitudes, permite a los procesos de trabajo abrir la cola de solicitudes, recibir solicitudes y enviar respuestas. De forma predeterminada, los procesos no pueden abrir una cola de solicitudes a menos que se les haya concedido permiso en la ACL. Las aplicaciones no requieren privilegios administrativos para crear la cola de solicitudes.

La cola de solicitudes debe crearse con un nombre especificado en el parámetro pName de HttpCreateRequestQueue para que otros procesos abran la cola de solicitudes. Si pName es NULL, se crea una cola de solicitudes sin nombre y no se pueden abrir otros procesos.

Procesos de creador y controlador

Cuando se crea la cola de solicitudes, la aplicación puede abrirla como un proceso de controlador o un proceso de creador. El controlador y el creador procesan ambos actúan como administradores para la cola de solicitudes, pero el controlador no realiza operaciones de E/S en ella. La aplicación indica que es un proceso de controlador cuando se crea la cola de solicitudes especificando HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER en el parámetro Flags de HttpCreateRequestQueue. Si no se establece la marca HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER , la aplicación es un proceso de creador.

La lista siguiente contiene las tareas realizadas por el proceso del controlador y el proceso de creador:

  • Cree la cola de solicitudes y especifique el nombre.
  • Configure la cola de solicitudes mediante la función HttpSetRequestQueueProperty .
  • Consulte los parámetros de configuración de la cola de solicitudes mediante la función HttpQueryRequestQueueProperty .
  • Cree grupos de direcciones URL y asócielos a una cola de solicitudes.
  • Establezca la ACL que especifica los procesos de trabajo que pueden recibir E/S en la cola de solicitudes.
  • Llame a HttpWaitForDemandStart para retrasar la creación de instancias de los procesos de trabajo hasta que llegue la primera solicitud a la cola de solicitudes.

Además de estas tareas, el proceso de creador también puede realizar operaciones de E/S en la cola de solicitudes.

Procesos de trabajo

Un proceso de trabajo solo puede abrir una cola de solicitudes existente si se les ha concedido acceso a ella en la ACL. Los procesos de trabajo que funcionan con privilegios mínimos pueden abrir una cola de solicitudes y realizar E/S en él. Las aplicaciones abren una cola de solicitudes existente llamando a HttpCreateRequestQueue con el HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING en el parámetro Flags y el nombre de la cola de solicitudes en el parámetro pName .

El proceso de trabajo realiza las siguientes funciones:

  • Recibir solicitudes y enviar respuestas en la cola de solicitudes.
  • Abra una cola de solicitudes existente por nombre. El identificador de la cola de solicitudes devuelta al proceso de trabajo no se puede usar para configurar la cola de solicitudes.
  • Consulte los parámetros de configuración de la cola de solicitudes.

En el diagrama siguiente se muestra el modelo de proceso de trabajo para las colas de solicitudes. La cola de solicitudes puede tener varios procesos de trabajo que procesan E/S y un proceso de creador que configura la cola de solicitudes.

modelo de proceso de trabajo para colas de solicitudes