Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Walter Oliver
Wenn Sie die freigegebene IIS 7-Konfiguration in einer Umgebung verwenden, in der Standortbereitstellungsaufgaben von einem Remotecomputer gesteuert werden, können Sie bemerken, was als „Problem der Double-Hop-Authentifizierung“ bekannt ist. Dieses Problem verhindert, dass Sie Bereitstellungsaufgaben ausführen. In diesem Artikel wird das Problem beschrieben, und es werden Problemumgehungen aufgezeigt.
Problembeschreibung
Die im folgenden Diagramm dargestellte Bereitstellungstopologie könnte eine gängige Option für die Nutzung der neuen, in IIS 7 verfügbaren gemeinsamen Konfigurationsfunktion sein, bei der die Konfiguration auf einer Netzwerkfreigabe zentralisiert ist und ein zentralisierter Bereitstellungsserver Bereitstellungsvorgänge in mehreren Webserverfarmen durchführt. Es wird davon ausgegangen, dass alle Webserverfarmen Windows Server® 2008 R2 mit IIS 7 ausführen.
Typische Bereitstellungstopologie
Freigegebene Konfiguration kann einfach über IIS-Manager aktiviert werden, wie im folgenden Screenshot gezeigt.
Eine Reihe neuer verwalteter APIs wurde in IIS 7 im Microsoft.Web.Administration-Namespace bereitgestellt. Die APIs enthalten eine OpenRemote-Methode, die Remoteverwaltungen über das Netzwerk hinweg ermöglicht, wie im folgenden Diagramm dargestellt.
Der folgende Codeschnipsel veranschaulicht die Verwendung von OpenRemote zum Bereitstellen einer Anwendung auf einem anderen Webserver.
Wenn die freigegebene Konfiguration für den Remotewebserver aktiviert ist, wird beim Ausführen des Beispielcodes die folgende Fehlermeldung angezeigt:
Das Problem ist nicht vorhanden, wenn der Remotewebserver anstelle der freigegebenen Konfiguration lokale Konfiguration verwendet.
Deaktivieren Sie die freigegebene IIS-Konfiguration:
Führen Sie die Beispielanwendung erneut aus:
Die Änderung wurde erfolgreich übernommen.
Dies ist ein Problem mit der Doppel-Hop-Authentifizierung, das durch die gemeinsame Konfiguration auf mehreren Servern verursacht wird. Der OpenRemote-Aufruf ruft einfach remote das COM-Objekt über DCOM auf. Wenn die Konfiguration nicht lokal konfiguriert ist, versucht das COM-Objekt, den doppelten Hop zu erledigen, der bei der Verwendung von COM nicht zulässig ist. Beachten Sie, dass dies nur im Schreibvorgang in die freigegebene Konfiguration erfolgt.
Wenn ein Lesevorgang durchgeführt wird, verwendet das Underline-Konfigurationssystem die in der Datei redirection.config gespeicherten Anmeldeinformationen, um sich auf dem entfernten Netzwerkfreigabeserver zu authentifizieren, bei dem dieses Doppel-Hop-Problem nicht auftritt. Bei Schreibvorgängen verwendet die unterstrichene Konfiguration das Sicherheitstoken des Aufrufers, um die Vorgänge durchzuführen, bei denen das Sicherheitstoken auf dem entfernten Netzwerkfreigabeserver ungültig ist.
Problemumgehungen
Option 1: Ändern der DCOM-Konfiguration für das COM-Konfigurationsobjekt mithilfe eines angegebenen Kontos
Um das Doppel-Hop-Problem mit dem Konfigurations-COM-Objekt zu umgehen, müssen wir die DCOM-Konfiguration so ändern, dass ein bestimmtes Konto anstelle des Sicherheitskontextes des Aufrufers verwendet wird, damit sich das Konfigurations-COM-Objekt am Remote-Netzwerkfreigabeserver mit den angegebenen Anmeldeinformationen authentifizieren kann.
Sie können das COM-Objekt für die IIS 7-Konfiguration - ahadmin - unter DCOM Config finden, indem Sie die Komponentendienste auf dem Remote-Webserver verwenden, wie in der folgenden Abbildung dargestellt:
Klicken Sie mit der rechten Maustaste auf den Knoten ahadmin und wählen Sie Eigenschaften..., wählen Sie die Registerkarte Identität, ändern Sie die Option in „Dieser Benutzer“ anstelle von „Der startende Benutzer“ und geben Sie ein Benutzerkonto mit den folgenden Berechtigungen an:
- Sie verfügen über Änderungsberechtigungen für die freigegebenen Konfigurationsdateien auf dem Netzwerkfreigabeserver.
- Sie verfügen über die Leseberechtigung für die Datei redirection.config, die unter system32\inetsrv\config gespeichert ist
- Mitglied der lokalen Administratorgruppe, andernfalls können Sie die Ausnahme nicht entschlüsseln.
Klicken Sie auf OK.
Führen Sie die Beispielanwendung nach der Änderung erneut aus, und sie funktioniert erfolgreich.
Die Testanwendung wird ordnungsgemäß bereitgestellt.
Die Verwendung eines bestimmten Kontos für das Konfigurations-COM-Objekt könnte zusätzliche Sicherheitsrisiken bergen (d.h. jeder Benutzer könnte die Konfiguration ändern, solange er die Berechtigung hat, das COM-Objekt aufzurufen). Um die Sicherheitsrisiken zu verringern, konfigurieren Sie nur einen Webserver in der Webserver-Farm, der diese Option für die Bereitstellung verwendet, und konfigurieren Sie die Firewall so, dass nur bestimmte IP-Adressen auf den Server zugreifen können.
**Sicherheitswarnung**
Bei diesem Ansatz kann ein Nicht-Administrator möglicherweise Änderungen auf administrativer Ebene am Server vornehmen, da die Komponente nicht im Sicherheitskontext des Aufrufers läuft.
Option 2: Verwenden eines Beispielansatzes für Hostingdienste
Eine alternative Möglichkeit ist, OpenRemote nicht über einen DCOM-Aufruf zu verwenden und stattdessen einen Dienst wie das Codebeispiel für Hosting-Services zu erstellen, bei dem es sich um eine Reihe von Webdiensten handelt, die auf WCF (Windows Communication Foundation) aufbauen, und zwar auf einem der Webserver in der Webfarm, wie im folgenden Diagramm dargestellt:
Sie können den Windows Service verwenden, um die Dienste zu hosten, wenn Sie Probleme beim Hosten in IIS 7 haben. Der Webdienst baut auf den Microsoft.Web.Administration-APIs auf und bietet eine bessere Integrationsmöglichkeit, außerdem muss die Firewall nicht wie bei OpenRemote geöffnet werden.
Sicherheitsüberlegung
Der Dienst sollte geschützt werden, damit nur autorisierte und authentifizierte Benutzer den Dienst aufrufen können.
Option 3: Verwendung von WMI
Eine weitere Möglichkeit zur Vermeidung des Doppel-Hop-Problems ist die Verwendung des WMI-Dienstes, wie im folgenden Diagramm dargestellt.
Der WMI-Dienst hat die Möglichkeit, die Anmeldeinformationen für die Verbindung zum Remote-Webserver anzugeben. Der WMI-Dienst auf dem Remote-Server gibt die Identität vor, während er die Bereitstellungsoption durchführt, wie im folgenden Codeausschnitt gezeigt. Um die Vorgänge zu aktivieren, die mit einer freigegebenen Konfiguration arbeiten, müssen Sie die Identitätswechseloption angeben, während Sie eine Verbindung mit WMI auf dem Remoteserver herstellen. WMI erfordert außerdem, dass bestimmte Ports in der Firewall für Remoteaufrufe geöffnet sind.