Freigeben über


Benannte Anforderungswarteschlange

Das Feature "HTTP Server Version 2.0"-API für benannte Anforderungswarteschlangen ermöglicht mehreren Anwendungen, die unter separaten Prozessen und Benutzerkonten ausgeführt werden, den Zugriff auf die Anforderungswarteschlange. Die Anforderungswarteschlange wird durch den Namen geöffnet und mithilfe von Access Control Lists (ACLs) gesichert, um sicherzustellen, dass Anwendungen nicht auf andere Daten zugreifen können. Ein einzelner Prozess erstellt die Anforderungswarteschlange und erteilt anderen Prozessen die Berechtigung, die Anforderungswarteschlange zu verwenden. Daher greifen andere Prozesse auf dem Computer auf die Anforderungswarteschlange mit den geringsten Berechtigungen zu, die für Dienstanforderungen erforderlich sind. Mögliche Schäden am HTTP-Dienst aufgrund von Sicherheitsrisiken im Code von Drittanbietern werden minimiert, wenn Anwendungen unter den geringsten Rechten ausgeführt werden.

Die benannte Anforderungswarteschlange wird mit der HttpCreateRequestQueue-Funktion erstellt. Wenn die Anforderungswarteschlange erstellt wird, gibt die Anwendung die ACL im pSecurityAttribute-Parameter an. Die ACL, die nur festgelegt werden kann, wenn die Anforderungswarteschlange erstellt wird, ermöglicht Es Workerprozessen, die Anforderungswarteschlange zu öffnen, Anforderungen zu empfangen und Antworten zu senden. Standardmäßig dürfen Prozesse eine Anforderungswarteschlange nur öffnen, wenn ihnen die Berechtigung in der Zugriffssteuerungsliste erteilt wurde. Anwendungen erfordern keine Administratorrechte, um die Anforderungswarteschlange zu erstellen.

Die Anforderungswarteschlange muss mit einem Namen erstellt werden, der im pName-Parameter von HttpCreateRequestQueue angegeben ist, damit andere Prozesse die Anforderungswarteschlange öffnen können. Wenn pNameNULL ist, wird eine unbenannte Anforderungswarteschlange erstellt, die von keinem anderen Prozess geöffnet werden kann.

Ersteller- und Controllerprozesse

Wenn die Anforderungswarteschlange erstellt wird, kann sie von der Anwendung als Controller- oder Erstellerprozess geöffnet werden. Der Controller und der Ersteller fungieren beide als Administratoren für die Anforderungswarteschlange, aber der Controller führt keine E/A-Vorgänge dafür aus. Die Anwendung gibt an, dass es sich um einen Controllerprozess handelt, wenn die Anforderungswarteschlange erstellt wird, indem HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER im Flags-Parameter von HttpCreateRequestQueue angegeben wird. Wenn das HTTP_CREATE_REQUEST_QUEUE_FLAG_CONTROLLER-Flag nicht festgelegt ist, ist die Anwendung ein Erstellerprozess.

Die folgende Liste enthält Aufgaben, die vom Controllerprozess und dem Erstellerprozess ausgeführt werden:

  • Erstellen Sie die Anforderungswarteschlange, und geben Sie den Namen an.
  • Konfigurieren Sie die Anforderungswarteschlange mithilfe der HttpSetRequestQueueProperty-Funktion .
  • Fragen Sie die Konfigurationsparameter der Anforderungswarteschlange mithilfe der HttpQueryRequestQueueProperty-Funktion ab.
  • Erstellen Sie URL-Gruppen, und ordnen Sie sie einer Anforderungswarteschlange zu.
  • Legen Sie die ACL fest, die die Workerprozesse angibt, die E/A für die Anforderungswarteschlange empfangen dürfen.
  • Rufen Sie HttpWaitForDemandStart auf, um die Instanziierung von Workerprozessen zu verzögern, bis die erste Anforderung in der Anforderungswarteschlange eingeht.

Zusätzlich zu diesen Aufgaben kann der Erstellerprozess auch E/A-Vorgänge für die Anforderungswarteschlange ausführen.

Arbeitsprozesse

Ein Workerprozess kann eine vorhandene Anforderungswarteschlange nur öffnen, wenn ihm in der ACL Zugriff darauf gewährt wurde. Workerprozesse, die unter den geringsten Rechten arbeiten, können eine Anforderungswarteschlange öffnen und E/A für diese ausführen. Anwendungen öffnen eine vorhandene Anforderungswarteschlange, indem sie HttpCreateRequestQueue mit dem HTTP_CREATE_REQUEST_QUEUE_FLAG_OPEN_EXISTING im Flags-Parameter und dem Namen der Anforderungswarteschlange im pName-Parameter aufrufen.

Der Workerprozess führt die folgenden Funktionen aus:

  • Empfangen von Anforderungen und Senden von Antworten in der Anforderungswarteschlange.
  • Öffnen Sie eine vorhandene Anforderungswarteschlange nach Name. Das Handle für die Anforderungswarteschlange, die an den Workerprozess zurückgegeben wird, kann nicht zum Konfigurieren der Anforderungswarteschlange verwendet werden.
  • Fragen Sie die Konfigurationsparameter der Anforderungswarteschlange ab.

Das folgende Diagramm zeigt das Workerprozessmodell für Anforderungswarteschlangen. Die Anforderungswarteschlange kann über mehrere Workerprozesse verfügen, die E/A verarbeiten, und ein Erstellerprozess, der die Anforderungswarteschlange konfiguriert.

Workerprozessmodell für Anforderungswarteschlangen