Freigeben über


IIS- und .NET Framework-Sicherheit

Windows Server AppFabric verwendet die stabilen Sicherheitsfeatures von IIS und die .NET Framework, Version 4 zum Sichern der .NET Framework 4-Dienste, die in Windows-Prozessaktivierungsdienst (WAS) gehostet werden. Damit Sie verstehen, wie die Sicherheit zwischen dem Client und dem Dienst in AppFabric ordnungsgemäß konfiguriert wird, ist es wichtig, die Sicherheitsoptionen in IIS und in .NET Framework zu verstehen.

Im Allgemeinen sind zahlreiche Schichten von Sicherheitsoptionen verfügbar, und Sie sollten diejenigen davon nutzen, die für Ihre Bereitstellung am besten geeignet sind. Jede Sicherheitsschicht ermöglicht das Sichern bestimmter Ressourcen. Das Tooling in IIS stellt im Allgemeinen Methoden zum Sichern von IIS-Elementen wie z. B. Websites und Anwendungen zur Verfügung, während die .NET Framework 4-Sicherheitseinstellungen auf WCF/WF-Dienstkonzepte wie z. B. Dienste, Endpunkte und Vorgänge angewendet werden können.

Weitere Informationen zur Sicherheit finden Sie unter Windows Communication Foundation-Sicherheit (https://go.microsoft.com/fwlink/?LinkId=183157) und IIS-Sicherheit (https://go.microsoft.com/fwlink/?LinkId=183159).

IIS-Sicherheit und AppFabric

IIS wirkt sich von der Seite des aufrufenden Clients sowie beim Zugriff des .NET Framework-Diensts auf die Überwachungs- und Persistenzdatenspeicher auf die Sicherheit einer Anwendung aus. IIS wirkt sich in den folgenden Bereichen auf die AppFabric-Sicherheit aus:

  • IIS_IUSRS. Die zum Verwalten des Laufzeitzugriffs auf Dateien und Ordner in der IIS-Standardinstallation verwendete Windows-Sicherheitsgruppe.

    securitySicherheit Hinweis
    Verwechseln Sie die Windows-Sicherheitsgruppe IIS_IUSRS nicht mit dem SQL Server-Anmeldenamen IIS_IUSRS. Sie stehen zwar in einer Beziehung zueinander, es handelt sich jedoch um separate Entitäten.

  • Anwendungspoolidentität. IIS fügt alle Anwendungspoolidentitäten zur Laufzeit dynamisch in die Gruppe IIS_IUSRS ein. Dieser Sicherheitsgruppe wird Zugriffsberechtigung für die erforderlichen Datenspeicher (insbesondere den Persistenzdatenspeicher) erteilt. Weitere Informationen finden Sie unter SQL Server-Sicherheit.

.NET Framework-Sicherheit für AppFabric

Die Aussagen hinsichtlich der Sicherheit für .NET Framework-Dienste, die in AppFabric konfiguriert sind, beziehen sich eigentlich auf WCF. WCF definiert das Transportprotokoll, das für die Kommunikation zwischen einem WCF-Client und einem .NET Framework-Dienst (WCF oder WF) verwendet wird. .NET Framework ist die Komponente, die ein vereinheitlichtes Programmiermodell für das schnelle Erstellen dienstorientierter Anwendungen bereitstellt, die web- und unternehmensübergreifend kommunizieren. WCF ist nicht nur in vorhandene Sicherheitsinfrastrukturen integriert, sondern erweitert die verteilte Sicherheit auch über Nur-Windows-Domänen hinaus, indem sichere SOAP-Nachrichten verwendet werden. Weitere Informationen finden Sie unter Windows Communication Foundation Security (https://go.microsoft.com/fwlink/?LinkId=183157) (englischsprachig) und Sicherheitsübersicht (https://go.microsoft.com/fwlink/?LinkId=183160).

Kombinieren von IIS- und .NET Framework-Sicherheit

Es ist für die Integrität einer Anwendung entscheidend, dass sichergestellt ist, dass eine an einen Dienst gesendete Nachricht während des Übertragungsvorgangs nicht angezeigt oder geändert wird. Dies kann mithilfe von Verschlüsselung und Signierung erreicht werden. Die Nachrichtenübertragung ist jedoch nur dann wirklich sicher, wenn Sie die Identität der aufrufenden Clientanwendung mit absoluter Gewissheit auch überprüfen (authentifizieren) können. Für AppFabric ist das Verständnis wichtig, wie IIS und WCF zusammenarbeiten, damit dies der Fall ist.

Weitere Informationen zu Mustern und Vorgehenweisen für die Sicherheit von Webdiensten finden Sie unter Patterns & Practices: Improving Web Services Security Guide (https://go.microsoft.com/fwlink/?LinkId=183161) (englischsprachig).

IIS-Authentifizierung in AppFabric

Die WCF-Transportsicherheitsmechanismen in Windows hängen von der Bindung und dem anschließend verwendeten Transport ab. Wenn z. B. die Klasse WSHttpBinding verwendet wird, ist der Transport vom Typ HTTP, und der primäre Mechanismus zum Sichern des Transport ist SSL (Secure Sockets Layer) über HTTP, auch als HTTPS bezeichnet. Für Nachrichtensicherheit wird die WS-Security-Spezifikation zum Sichern von Nachrichten auf der Nachrichtenebene verwendet. Dies bedeutet, dass Optimierungen des SOAP-Messagings zum Sicherstellen der Vertraulichkeit, Integrität und Authentifizierung auf der SOAP-Nachrichtenebene (anstatt auf der Transportebene) verwendet werden.

Gehostete Dienstmodi

Gehostete Dienste können in zwei Modi ausgeführt werden: gemischter Transportmodus oder ASP.NET-Kompatibilitätsmodus. Der Modus wird durch das Konfigurationskennzeichen aspNetCompatibilityEnabled auf Anwendungsebene gesteuert. Sie können dieses Kennzeichen auch zur Laufzeit aus der statischen Eigenschaft ServiceHostingEnvironment.AspNetCompatibilityEnabled abrufen. Das Kennzeichen aspNetCompatibilityEnabled ist standardmäßig false. Dienste werden daher im gemischten Transportmodus ausgeführt, wenn diese Einstellung nicht ausdrücklich geändert wird.

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false"/>
</system.serviceModel>

Gemischter Transportmodus

Im gemischten Transportmodus fängt das HTTP-Modul die Anforderung in der frühen Phase der Pipeline ab: BeginRequest. Wenn die Anforderung eingeht, legt das HTTP-Modul HttpContext.Current auf null fest und setzt den Identitätswechsel zurück, wenn der Thread einen Identitätswechsel verwendet. Da die Clientanforderung in dieser frühen Phase abgefangen wird, werden andere HTTP-Features automatisch deaktiviert. Bei der Ausführung im gemischten Transportmodus haben Dienste daher keinen Zugriff auf die folgenden HTTP-spezifischen ASP.NET-Features:

  • HttpContext.Current. Dieser Wert ist in diesem Modus immer null. WCF stellt ein Gegenstück zu diesem Feature zur Verfügung: OperationContext.Current.

  • Datei-/URL-Autorisierung. Dieses Autorisierungsfeature der Transportschicht wird normalerweise durch den Abschnitt <system.web/authorization> in der Datei Web.config für ASMX-Dienste aktiviert. Die Transportautorisierung ist im gemischten Modus in WCF deaktiviert. Die einzige Option zum Ausführen von Datei-/URL-Autorisierung besteht im Verwenden von Autorisierung auf Nachrichtenebene, die in WCF implementiert ist.

  • Identitätswechsel. Identitätswechsel ermöglicht es dem Dienst, während der Ausführung einer Aktion auf dem Server als Client zu fungieren. Das ASP.NET-Autorisierungsfeature wird normalerweise durch den Abschnitt <system.web/identity> in der Datei Web.config für ASMX-Dienste aktiviert. Es ist in der WCF-Transportschicht im gemischten Modus nicht verfügbar.

  • Sitzungsstatus. Der ASP.NET-Sitzungsstatus wird im gemischten Modus nicht unterstützt. WCF verfügt über eine eigene zuverlässige Sitzungsimplementierung, die flexible Sitzungsstatusverwaltung bereitstellt. Das größte Problem für WCF besteht darin, dass der Sitzungsstatus bei der Wiederverwendung von Anwendungen nicht bestehen bleibt und in Webgärten oder Webfarmen nicht funktioniert. Dies liegt daran, dass kein Mechanismus zum Freigeben des Status zwischen Anwendungen und Prozessen vorhanden ist, der den (deaktivierten) ASP.NET-Statusdienst ersetzen könnte.

  • Andere HTTP-Features. Andere HTTP-Features verwenden HttpContext.Current und werden im gemischten Modus nicht unterstützt. Sie können z. B. nicht erwarten, ein richtiges Ergebnis von ConfigurationManager.AppSettings zu erhalten. Das Globalisierungsfeature über <system.web/globalization> ist nicht verfügbar.

Die IIS-Authentifizierung wird in WCF-Aufrufen der .NET Framework-Dienste ignoriert, wenn die Ausführung im gemischten Transportmodus erfolgt. Dies führt dazu, dass die WCF-Sicherheit der primäre Mechanismus für die Authentifizierung und Sicherung der Nachrichtenübertragung zwischen dem WCF-Client und dem .NET Framework-Dienst ist. Im gemischten Transportmodus werden alle Transporte gleich behandelt. Ein Dienst kann mehrere WCF-Endpunkte besitzen, und diese können den gleichen Transport oder verschiedene Transporte überwachen, z. B. HTTP, net.tcp, net.pipe, net.msmq usw. Gehostete Dienste, die im gemischten Transportmodus ausgeführt werden erfordern jedoch auch weiterhin ASP.NET und IIS zum Bereitstellen der Hostingumgebung, Anwendungskonfiguration und Bereitstellung.

ASP.NET-Kompatibilitätsmodus

Zum Verwenden von IIS-Authentifizierung in den von WAS gehosteten Anwendungen, einschließlich aller in AppFabric gehosteten Anwendungen, müssen der ASP-Kompatibilitätsmodus und WCF-Transportsicherheit verwendet werden. Die folgenden IIS-Sicherheitsfeatures können nur bei Verwendung des ASP-Kompatibilitätsmodus genutzt werden:

  • Steuern, welche Benutzer von Windows und Windows-Gruppen eine Verbindung mit einer Website oder einer Anwendung herstellen dürfen, die mithilfe von IIS-Manager Dienste hostet.

  • Konvertieren einer Website in ein virtuelles IIS-Verzeichnis und anschließendes Festlegen der Sicherheitseinstellungen auf den physischen Pfad des virtuellen Verzeichnisses, indem zwei Methoden verwendet werden. Die Pass-Through-Authentifizierung weist IIS an, die Anmeldeinformationen des authentifizierten Benutzers an das Windows-Dateisystem zu übergeben, wenn auf den physischen Pfad des virtuellen Verzeichnisses zugegriffen wird. Alternativ können Sie eine bestimmte Benutzeridentität für den Prozess reservieren, der Ihre .NET Framework-Dienste ausführt, um auf alle Inhalte im angegebenen physischen Pfad zuzugreifen. 

  • Wählen Sie die geeignete IIS-Authentifizierungsmethode (Anonym, Standard, Formular, Digest, Windows-Authentifizierung oder ASP.NET-Formularidentitätswechsel) aus, um die Sicherheit für Aufrufe zu steuern, die für die Dienste eingehen, die der Website zugeordnet sind.

Sie können die folgenden IIS-Sicherheitsfeatures unabhängig davon nutzen, ob der ASP-Kompatibilitätsmodus aktiviert ist:

  • Konfigurieren der SSL-Einstellungen für die Verwendung von 64- oder 128-Bit-Verschlüsselung sowie Konfigurieren, wie Clientzertifikate für eingehende Anforderungen verarbeitet werden.

  • Erstellen von Autorisierungsregeln, um den Benutzerzugriff auf Websites oder Anwendungen zu erlauben oder zu verweigern.

  • Verwenden der IIS-Protokollierungsfunktionen zum Erstellen eines Sicherheitsüberwachungsprotokolls für eingehende Anforderungen.

  • Bearbeiten von sicherheitsbezogenen Verbindungszeichenfolgen in den Überwachungs- und Persistenzdatenbanken.

  • Verwalten der Bindungseinstellungen für Clients, die Dienste aufrufen.

  • Konfigurieren der Ausführungsberechtigungen auf Dateiebene (Vollzugriff, Lese- und Ausführungszugriff, Auflisten der Dateiinhalte, Schreibzugriff usw.) für die enthaltende Website oder ihre enthaltenen Dienstanwendungen.

  • Ändern der standardmäßigen Identität des Netzwerkdiensts eines benutzerdefinierten Anwendungspools in eine bestimmte Identität, unter der er ausgeführt werden kann. Bei Verwendung von integrierter Sicherheit in SQL Server ist dies die Identität, die für Aufrufe an SQL Server verwendet wird. 

Weitere Informationen finden Sie unter WCF-Dienste und ASP.NET (https://go.microsoft.com/fwlink/?LinkId=183163).

Authentifizierungsanweisungen

Gehen Sie folgendermaßen vor, um IIS-Authentifizierung für eine Webanwendung zu aktivieren:

  • Verwenden Sie den ASP-Kompatibilitätsmodus.

  • Verwenden Sie eine auf HTTP basierende WCF-Bindung, die den Transportsicherheitsmodus unterstützt (basicHttpBinding, wsHttpBinding und wsFederationHttpBinding).

Konfigurieren Sie nach dem Erfüllen dieser Anforderungen IIS und den gehosteten .NET Framework-Dienst zur Verwendung kompatibler IIS- und WCF-Sicherheitseinstellungen. Konfigurieren Sie die verschiedenen Sicherheitseinstellungen der Anwendung so, dass sie mit der Sicherheit und den Bindungen aller ihrer Dienste übereinstimmt. Das Festlegen eines anderen Schemas löst einen Aktivierungsfehler beim WCF-Dienst aus. Sicherheitsmodi in WCF (in diesem Fall der Modus der Transportsicherheit) werden in den Bindungselementen angegeben. Diese müssen Authentifizierung unterstützen, stellen Sie daher sicher, dass die gewählten WCF-Sicherheitseinstellungen mit den IIS-Einstellungen kompatibel sind. Der Transport wird für die Bindung dem konfigurierten WCF-Authentifizierungsmodus zugeordnet. Der Dienst schreibt den Authentifizierungsmodus durch seine Bindungskonfiguration vor, und der WCF-Client muss diesem in seiner Konfigurationsdatei genügen. Der Client muss so konfiguriert sein, dass er die richtige Form von Clientanmeldeinformationen bereitstellt, um das durch den Dienst zur Verfügung gestellte Authentifizierungsschema zu unterstützen. Da AppFabric kein Benutzeroberflächenelement bereitstellt, um diese Arten von Änderungen auszuführen, müssen Sie diese manuell in der entsprechenden Web.config-Datei vornehmen

securitySicherheit Hinweis
wsDualHttpBinding unterstützt nur nachrichtenbasierte Sicherheit und kann daher nicht verwendet werden, wenn Sie IIS-Authentifizierung in Ihren Diensten verwenden.

  2011-12-05