Share via


Sicherheit bei verteilten Anwendungen

Die Sicherheit wird in Windows Communication Foundation (WCF) in drei funktionelle Hauptbereiche unterteilt: Übertragungssicherheit, Zugriffssteuerung und Überwachung. Durch die Übertragungssicherheit werden Integrität, Vertraulichkeit und Authentifizierung bereitgestellt. Die Übertragungssicherheit wird durch eine der folgenden Funktionen bereitgestellt: Transportsicherheit, Nachrichtensicherheit oder TransportWithMessageCredential.

Einen Überblick über die Nachrichtensicherheit in WCF erhalten Sie unter Sicherheitsübersicht. Weitere Informationen zu den beiden anderen WCF-Sicherheitsfunktionen finden Sie unter Autorisierung und unter Überwachen von Sicherheitsereignissen.

Szenarien für die Übertragungssicherheit

Zu den üblichen Szenarien, in denen die WCF-Übertragungssicherheit eingesetzt wird, gehören folgende Situationen:

  • Sichere Übertragung mittels Windows: Ein WCF-Client und ein WCF-Dienst werden in einer Windows-Domäne (oder einer Windows-Gesamtstruktur) bereitgestellt. Da die Nachrichten persönliche Daten enthalten, sind unter anderem eine gegenseitige Authentifizierung von Client und Dienst sowie die Integrität und Vertraulichkeit der Nachrichten erforderlich. Darüber hinaus muss belegt werden, dass eine bestimmte Transaktion stattgefunden hat. So sollten beim Empfänger der Nachricht zum Beispiel Signaturinformationen aufgezeichnet werden.
  • Sichere Übertragung mittels UserName und HTTPS: Der WCF-Client und der WCF-Dienst müssen so entwickelt werden, dass sie über das Internet kommunizieren können. Die Clientanmeldeinformationen werden anhand einer Datenbank mit Benutzername-/Kennwort-Paaren authentifiziert. Der Dienst wird unter einer HTTPS-Adresse mithilfe eines vertrauenswürdigen SSL-Zertifikats (SSL = Secure Sockets Layer) bereitgestellt. Da die Nachrichten über das Internet gesendet werden, müssen sich Client und Dienst gegenseitig authentifizieren und die Integrität und Vertraulichkeit der Nachrichten muss während der Übertragung gewahrt werden.
  • Sichere Übertragung mittels Zertifikaten: Der WCF-Client und der WCF-Dienst müssen so entwickelt werden, dass sie über das öffentliche Internet kommunizieren können. Client und Dienst verfügen beide über Zertifikate, mit denen die Nachrichten geschützt werden können. Client und Dienst verwenden das Internet, um miteinander zu kommunizieren und Transaktionen von hohem Wert auszuführen, für die Nachrichtenintegrität, Vertraulichkeit und eine gegenseitige Authentifizierung erforderlich sind.

Integrität, Vertraulichkeit und Authentifizierung

Die drei Funktionen Integrität, Vertraulichkeit und Authentifizierung ergeben zusammen die Übertragungssicherheit. Durch die Übertragungssicherheit werden die Funktionen bereitgestellt, die Ihnen dabei helfen, die Bedrohungen für eine verteilte Anwendung zu mindern. In der folgenden Tabelle werden kurz die drei Funktionen beschrieben, aus denen sich die Übertragungssicherheit zusammensetzt.

Funktion Beschreibung

Integrität

Integrität ist die Zusicherung, dass Daten vollständig und richtig sind, insbesondere, nachdem sie von einem Punkt an einen anderen gesendet und dabei möglicherweise von vielen Parteien gelesen wurden. Die Integrität muss gewahrt werden, um eine Manipulation der Daten zu vermeiden. Dieses Ziel wird in der Regel durch das digitale Signieren von Nachrichten erreicht.

Vertraulichkeit

Vertraulichkeit ist die Zusicherung, dass eine Nachricht nur vom beabsichtigten Empfänger gelesen wird. So müssen zum Beispiel Kreditkartennummern, die über das Internet gesendet werden, vertraulich behandelt werden. Vertraulichkeit wird häufig durch Verschlüsselung der Daten mit einem Schema aus öffentlichem und privatem Schlüssel bereitgestellt.

Authentifizierung

Authentifizierung ist die Überprüfung einer beanspruchten Identität. So muss beispielsweise bei Bankkonten gewährleistet sein, dass nur die tatsächlichen Kontoinhaber Geld abheben können. Es gibt viele Möglichkeiten, eine Authentifizierung bereitzustellen. Eine häufig verwendete Methode ist das Benutzer-/Kennwortsystem. Eine andere ist die Verwendung eines von einem Drittanbieter bereitgestellten X.509-Zertifikats.

Sicherheitsmodi

In WCF gibt es mehrere Modi für die Übertragungssicherheit, die in der folgenden Tabelle beschrieben werden.

Modus Beschreibung

Keine (None)

Auf Transport- bzw. Nachrichtenebene wird keine Sicherheit bereitgestellt. Standardmäßig wird dieser Modus im Rahmen der vordefinierten Bindungen nur beim <basicHttpBinding>-Element bzw. (bei Verwendung von Code) bei der BasicHttpBinding-Klasse verwendet.

Transport

Es wird ein sicherer Transport wie HTTPS zur Gewährleistung von Integrität, Vertraulichkeit und gegenseitiger Authentifizierung verwendet.

Nachricht

Es wird die SOAP-Nachrichtensicherheit zur Gewährleistung von Integrität, Vertraulichkeit und gegenseitiger Authentifizierung verwendet. SOAP-Nachrichten werden gemäß den Standards für die WS-Sicherheit geschützt.

Gemischt

Es wird die Transportsicherheit zur Gewährleistung von Integrität und Vertraulichkeit sowie für die Serverauthentifizierung verwendet. Für die Clientauthentifizierung wird die Nachrichtensicherheit (WS-Sicherheit und andere Standards) eingesetzt.

(Der Enumerationswert für diesen Modus ist TransportWithMessageCredential.)

Beide

Schutz und Authentifizierung finden auf beiden Ebenen statt. Dieser Modus ist nur im <netMsmqBinding>-Element verfügbar.

Identitätsnachweis (Anmeldeinformationen) und Übertragungssicherheit

Bei den Anmeldeinformationen (dem Identitätsnachweis) handelt es sich um Daten, mit denen eine beanspruchte Identität bzw. beanspruchte Befähigungen belegt werden. Für den Identitätsnachweis mittels Anmeldeinformationen müssen sowohl die Daten vorgelegt als auch der Nachweis erbracht werden, dass sich die Daten rechtmäßig im Besitz des Inhabers befinden. WCF unterstützt verschiedene Arten von Anmeldeinformationen auf Ebene der Transportsicherheit und der Nachrichtensicherheit. Sie können für eine WCF-Bindung die Art der Anmeldeinformationen (das heißt des Identitätsnachweises) angeben.

In vielen Ländern bzw. Regionen ist der Führerschein ein Beispiel für einen Identitätsnachweis. Ein Führerschein enthält Daten, die die Identität und Befähigungen einer Person belegen. Der rechtmäßige Besitz wird mithilfe eines Bilds des Inhabers nachgewiesen. Der Führerschein wird von einer vertrauenswürdigen Stelle ausgegeben, in der Regel von einer dafür zuständigen Regierungsbehörde. Der Führerschein wird eingeschweißt und enthält ggf. ein Hologramm, wodurch sichergestellt wird, dass er nicht manipuliert oder gefälscht wurde.

Nehmen Sie als Beispiel zwei Arten von Identitätsnachweis (Anmeldeinformationen), die in WCF unterstützt werden: der Identitätsnachweis mittels Benutzername und Zertifikat (X.509).

Beim Identitätsnachweis mittels Benutzername stellt der Benutzername die beanspruchte Identität dar, und das Kennwort ist der Nachweis des rechtmäßigen Besitzes. Die vertrauenswürdige Stelle ist in diesem Fall das System, das den Benutzernamen und das Kennwort überprüft.

Beim Identitätsnachweis mittels Zertifikat können die beanspruchte Identität bzw. die beanspruchten Befähigungen durch den Antragstellernamen, den alternativen Antragstellernamen oder spezielle Felder im Zertifikat belegt werden. Der Nachweis des rechtmäßigen Besitzes der Daten erfolgt durch eine Signatur, die mit dem zugehörigen privaten Schlüssel erzeugt wird.

Weitere Informationen zur Programmierung der Übertragungssicherheit und zur Angabe von Anmeldeinformationen finden Sie unter Bindungen und Sicherheit und unter Sicherheitsverhalten in WCF.

Arten von Clientanmeldeinformationen bei der Transportsicherheit

In der folgenden Tabelle finden Sie die möglichen Werte, die Sie beim Erstellen einer Anwendung verwenden können, die die Übertragungssicherheit nutzt. Sie können diese Werte entweder im Code oder in Bindungseinstellungen festlegen.

Einstellung Beschreibung

Keine (None)

Gibt an, dass der Client keine Anmeldeinformationen vorlegen muss. Dies bedeutet, dass es sich in diesem Fall um anonyme Clients handelt.

Basis (Basic)

Gibt die Standardauthentifizierung an. Weitere Informationen finden Sie unter RFC2617, "HTTP-Authentifizierung: Basis- und Digestauthentifizierung" (HTTP Authentication: Basic and Digest Authentication, Artikel in englischer Sprache).

Digest

Gibt die Digestauthentifizierung an. Weitere Informationen finden Sie unter RFC2617, "HTTP-Authentifizierung: Standard- und Digestauthentifizierung" (möglicherweise in englischer Sprache).

Ntlm

Gibt die Windows-Authentifizierung mit SSPI-Aushandlung auf einer Windows-Domäne an.

Die SSPI-Aushandlung führt dazu, dass entweder das Kerberos-Protokoll oder NT LanMan (NTLM) verwendet wird.

Windows

Gibt die Windows-Authentifizierung mit SSPI auf einer Windows-Domäne an. SSPI wählt entweder das Kerberos-Protokoll oder NTLM als Authentifizierungsdienst aus.

Zuerst wird das Kerberos-Protokoll angewendet, wenn dies scheitert, wird NTLM verwendet.

Zertifikat (Certificate)

Führt die Clientauthentifizierung mit einem Zertifikat (in der Regel X.509) durch.

Arten von Clientanmeldeinformationen bei der Nachrichtensicherheit

In der folgenden Tabelle finden Sie die möglichen Werte, die Sie beim Erstellen einer Anwendung verwenden können, die die Nachrichtensicherheit nutzt. Sie können diese Werte entweder im Code oder in Bindungseinstellungen festlegen.

Einstellung Beschreibung

Keine (None)

Ermöglicht dem Dienst die Interaktion mit anonymen Clients.

Windows

Ermöglicht den SOAP-Nachrichtenaustausch im Rahmen des authentifizierten Kontexts von Windows-Anmeldeinformationen. Es wird mittels SSPI-Aushandlung entweder das Kerberos-Protokoll oder NTLM als Authentifizierungsdienst ausgewählt.

Benutzername (Username)

Ermöglicht dem Dienst die Forderung, dass sich der Client über den Benutzernamen authentifiziert. Beachten Sie, dass in WCF keine kryptografischen Vorgänge mit dem Benutzernamen wie das Erzeugen einer Signatur oder das Verschlüsseln von Daten zulässig sind. WCF setzt prinzipiell durch, dass der Transport geschützt wird, wenn der Identitätsnachweis über den Benutzernamen erfolgt.

Zertifikat

Ermöglicht dem Dienst die Forderung, dass der Client über ein Zertifikat authentifiziert werden muss.

CardSpace

Ermöglicht dem Dienst die Forderung, dass der Client über eine CardSpace authentifiziert werden muss.

Programmieren von Anmeldeinformationen

Bei allen Arten von Clientanmeldeinformationen haben Sie im WCF-Programmiermodell die Möglichkeit, die Werte und Überprüfungen für die Anmeldeinformationen mithilfe von Dienstverhalten und von Kanalverhalten festzulegen.

Die Sicherheit in WCF verwendet zwei Arten von Anmeldeinformationen: Verhalten für Dienstanmeldeinformationen und Verhalten für Kanalanmeldeinformationen. Durch die Anmeldeinformationsverhalten in WCF werden die eigentlichen Daten angegeben, das heißt die Anmeldeinformationen, mit denen die durch Bindungen ausgedrückten Sicherheitsvoraussetzungen erfüllt werden. In WCF ist eine Clientklasse die Laufzeitkomponente, über die die Umsetzung zwischen Vorgangsaufruf und Nachrichten erfolgt. Alle Clients erben von der ClientBase-Klasse. Über die ClientCredentials-Eigenschaft der Basisklasse können Sie verschiedene Werte für die Clientanmeldeinformationen angeben.

In WCF sind Dienstverhalten Attribute, die auf die Klasse, die einen Dienstvertrag (Schnittstelle) implementiert, angewendet werden, um den Dienst programmatisch zu steuern. Über die ServiceCredentials-Klasse können Sie Zertifikate für Dienstanmeldeinformationen und Einstellungen für die Clientüberprüfung für verschiedene Arten von Clientanmeldeinformationen festlegen.

Aushandlungsmodell für die Nachrichtensicherheit

Im Modus für die Nachrichtensicherheit können Sie die Übertragungssicherheit so ausüben, dass die Dienstanmeldeinformationen nach dem Out-of-Band-System auf dem Client konfiguriert werden. Wenn Sie beispielsweise ein im Windows-Zertifikatspeicher gespeichertes Zertifikat verwenden, müssen Sie ein Tool wie das MMC-Snap-In (Microsoft Management Console) verwenden.

Im Modus für die Nachrichtensicherheit können Sie die Übertragungssicherheit auch so ausüben, dass im Zuge einer anfänglichen Aushandlung ein Austausch der Dienstanmeldeinformationen mit dem Client erfolgt. Setzen Sie die NegotiateServiceCredential-Eigenschaft auf true, um die Aushandlung zu aktivieren.

Siehe auch

Konzepte

Übersicht über die Endpunkterstellung
Vom System bereitgestellte Bindungen
Sicherheitsübersicht