Freigeben über


Bindungen und Sicherheit

Die systembasierten Bindungen, die in Windows Communication Foundation (WCF) enthalten sind, bieten eine schnelle Möglichkeit zum Programmieren von WCF-Anwendungen. Mit einer Ausnahme haben alle Bindungen ein Standardsicherheitsschema aktiviert. Dieses Thema hilft Ihnen, die richtige Bindung für Ihre Sicherheitsanforderungen auszuwählen.

Eine Übersicht über die WCF-Sicherheit finden Sie unter "Sicherheitsübersicht". Weitere Informationen zum Programmieren von WCF mithilfe von Bindungen finden Sie unter Programming WCF Security.

Wenn Sie bereits eine Bindung ausgewählt haben, finden Sie weitere Informationen zu den Laufzeitverhaltensweisen, die mit Sicherheit in Sicherheitsverhalten verknüpft sind.

Einige Sicherheitsfunktionen können nicht mit den vom System bereitgestellten Bindungen programmiert werden. Weitere Kontrolle über die Verwendung einer benutzerdefinierten Bindung finden Sie unter "Sicherheitsfunktionen mit benutzerdefinierten Bindungen".

Sicherheitsfunktionen von Bindungen

WCF enthält eine Reihe von vom System bereitgestellten Bindungen, die den meisten Anforderungen entsprechen. Wenn eine bestimmte Bindung nicht ausreicht, können Sie auch eine benutzerdefinierte Bindung erstellen. Eine Liste der vom System bereitgestellten Bindungen finden Sie unter System-Provided Bindungen. Weitere Informationen zu benutzerdefinierten Bindungen finden Sie unter "Benutzerdefinierte Bindungen".

Jede Bindung in WCF verfügt über zwei Formen: als API und als XML-Element, das in einer Konfigurationsdatei verwendet wird. Beispielsweise verfügt die WSHttpBinding (API) über ein Gegenstück im <wsHttpBinding>.

Im folgenden Abschnitt werden beide Formulare für jede Bindung aufgelistet und die Sicherheitsfeatures zusammengefasst.

BasicHttp

Verwenden Sie im Code die BasicHttpBinding Klasse; verwenden Sie in der Konfiguration das <basicHttpBinding>.

Diese Bindung ist für die Verwendung mit einer Reihe vorhandener Technologien konzipiert, einschließlich der folgenden:

  • ASP.NET Webdienste (ASMX), Version 1.

  • Webdiensterweiterungen (Web Service Enhancements, WSE)-Anwendungen.

  • Standardprofil gemäß Definition in der Spezifikation für die Webdienste-Interoperabilität (WS-I) (https://go.microsoft.com/fwlink/?LinkId=38955).

  • Grundlegendes Sicherheitsprofil gemäß der Definition in WS-I.

Diese Bindung ist standardmäßig nicht sicher. Es wurde entwickelt, um mit ASMX-Diensten zu arbeiten. Wenn die Sicherheit aktiviert ist, ist die Bindung für eine nahtlose Interoperabilität mit IIS-Sicherheitsmechanismen (Internet Information Services) konzipiert, z. B. Standardauthentifizierung, Digest und integrierte Windows-Sicherheit. Weitere Informationen finden Sie unter "Transport Security Overview". Diese Bindung unterstützt Folgendes:

  • HTTPS-Transportsicherheit.

  • HTTP-Standardauthentifizierung.

  • WS-Security.

Weitere Informationen finden Sie unterBasicHttpSecurity, BasicHttpMessageSecurity, BasicHttpMessageCredentialTypeund BasicHttpSecurityMode.

WSHttpBinding

Verwenden Sie im Code die WSHttpBinding Klasse; verwenden Sie in der Konfiguration das <wsHttpBinding>.

Standardmäßig implementiert diese Bindung die WS-Security Spezifikation und stellt Interoperabilität mit Diensten bereit, die die WS-*-Spezifikationen implementieren. Es unterstützt Folgendes:

  • HTTPS-Transportsicherheit.

  • WS-Security.

  • HTTPS-Transportschutz mit Anmeldedaten-Sicherheit für SOAP-Nachrichten zur Authentifizierung des Aufrufers.

Weitere Informationen finden Sie unter WSHttpSecurity, MessageSecurityOverHttp, MessageCredentialType, SecurityMode, HttpTransportSecurity, HttpClientCredentialTypeund HttpProxyCredentialType.

WSDualHttpBinding

Verwenden Sie im Code die WSDualHttpBinding Klasse; verwenden Sie in der Konfiguration das <wsDualHttpBinding>.

Diese Bindung wurde entwickelt, um Duplexdienstanwendungen zu aktivieren. Diese Bindung implementiert die WS-Security Spezifikation für die nachrichtenbasierte Übertragungssicherheit. Transportsicherheit ist nicht verfügbar. Standardmäßig werden die folgenden Features bereitgestellt:

  • Implementiert WS-Reliable Messaging für zuverlässige Kommunikation.

  • Implementiert WS-Security für Transaktionssicherheit und Authentifizierung.

  • Verwendet HTTP für die Nachrichtenübermittlung.

  • Verwendet die Text-/XML-Nachrichtencodierung.

Mithilfe von WS-Security (Nachrichtenebenensicherheit) können Sie mit der Bindung die folgenden Parameter konfigurieren:

  • Die Sicherheitsalgorithmus-Suite, um den Kryptografiealgorithmus zu bestimmen.

  • Bindungsoptionen für Folgendes:

    • die Bereitstellung von Dienstanmeldeinformationen, die beim Client Out-of-Band verfügbar sind.

    • die Bereitstellung von vom Dienst als Teil des Kanal-Setups ausgehandelten Dienstanmeldeinformationen.

Weitere Informationen finden Sie unter WSDualHttpSecurity und WSDualHttpSecurityMode.

NetTcpBinding

Verwenden Sie im Code die NetTcpBinding Klasse; verwenden Sie in der Konfiguration das <netTcpBinding>.

Diese Bindung ist für die maschinenübergreifende Kommunikation optimiert. Standardmäßig weist sie die folgenden Merkmale auf:

  • Implementiert Transportschichtsicherheit.

  • Nutzen Sie die Windows-Sicherheit für Übertragungssicherheit und Authentifizierung.

  • Verwendet TCP für den Transport.

  • Implementiert die binäre Nachrichtencodierung.

  • Implementiert WS-Reliable Messaging.

Zu den Optionen gehören:

  • Nachrichtenebenen-Sicherheit (über WS-Sicherheit).

  • Transportsicherheit mit Nachrichtenanmeldeinformationen: Vertraulichkeit und Integrität werden über Transport Layer Security (TLS) über TCP geboten und die Anmeldeinformationen für die Authentifizierung über WS-Sicherheit.

Weitere Informationen finden Sie unter NetTcpSecurity, TcpTransportSecurity, TcpClientCredentialType, MessageSecurityOverTcp und MessageCredentialType.

NetNamedPipeBinding

Verwenden Sie im Code die NetNamedPipeBinding Klasse; verwenden Sie in der Konfiguration das <netNamedPipeBinding>.

Diese Bindung ist für die prozessübergreifende Kommunikation (in der Regel auf demselben Computer) optimiert. Standardmäßig weist diese Bindung die folgenden Merkmale auf:

  • Verwendet transportsicherheit für nachrichtenübertragung und Authentifizierung.

  • Verwendet benannte Rohre für die Nachrichtenübermittlung.

  • Implementiert die binäre Nachrichtencodierung.

  • Verschlüsselung und Nachrichtensignatur.

Zu den Optionen gehören:

  • Authentifizierung mit Windows-Sicherheit.

Weitere Informationen finden Sie unter NetNamedPipeSecurity, NetNamedPipeSecurityMode und NamedPipeTransportSecurity.

MsmqIntegrationBinding

Verwenden Sie im Code die MsmqIntegrationBinding Klasse; verwenden Sie in der Konfiguration das <MsmqIntegrationBinding>.

Diese Bindung ist für die Erstellung von WCF-Clients und -Diensten optimiert, die mit Nicht-WCF-Microsoft Message Queuing (MSMQ)-Endpunkten interoperieren.

Standardmäßig verwendet diese Bindung Transportsicherheit und stellt die folgenden Sicherheitsmerkmale bereit:

  • Sicherheit kann deaktiviert werden (Keine).

  • MSMQ-Transportsicherheit (Transport).

Weitere Informationen finden Sie unter NetMsmqSecurity und NetMsmqSecurityMode.

NetMsmqBinding

Verwenden Sie im Code die NetMsmqBinding Klasse; verwenden Sie in der Konfiguration die <netMsmqBinding>.

Diese Bindung ist für die Erstellung von WCF-Diensten vorgesehen, die Unterstützung für MSMQ-Warteschlangennachrichten benötigen.

Standardmäßig verwendet diese Bindung Transportsicherheit und stellt die folgenden Sicherheitsmerkmale bereit:

  • Sicherheit kann deaktiviert werden (Keine).

  • MSMQ-Transportsicherheit (Transport).

  • SOAP-basierte Nachrichtensicherheit (Message).

  • Gleichzeitige Transport- und Nachrichtensicherheit (Beides).

  • Unterstützte Client-Anmeldedaten-Typen: None, Windows, UserName, Certificate, IssuedToken.

Die Certificate Anmeldeinformation wird nur unterstützt, wenn der Sicherheitsmodus auf entweder Both oder Message eingestellt ist.

Weitere Informationen finden Sie unter MessageSecurityOverMsmq und MsmqTransportSecurity.

WSFederationHttpBinding

Verwenden Sie im Code die WSFederationHttpBinding Klasse; verwenden Sie in der Konfiguration das <wsFederationHttpBinding>.

Standardmäßig verwendet diese Bindung WS-Security (Sicherheit auf Nachrichtenebene).

Weitere Informationen finden Sie unter Partnerverbund, WSFederationHttpSecurity und WSFederationHttpSecurityMode.

Benutzerdefinierte Bindungen

Wenn keine der vom System bereitgestellten Bindungen Die Anforderungen erfüllt, können Sie eine benutzerdefinierte Bindung mit einem benutzerdefinierten Sicherheitsbindungselement erstellen. Weitere Informationen finden Sie unter "Sicherheitsfunktionen mit benutzerdefinierten Bindungen".

Bindungsoptionen

In der folgenden Tabelle sind die Features zusammengefasst, die im Sicherheitsmodus angeboten werden, d. h. sie listet auf, welche Features verfügbar sind, wenn der Sicherheitsmodus auf Transport, Message oder TransportWithMessageCredential eingestellt ist. Verwenden Sie diese Tabelle, um die Sicherheitsfeatures zu finden, die Ihre Anwendung benötigt.

Konfiguration Funktionen
Transport Serverauthentifizierung

Clientauthentifizierung

Punkt-zu-Punkt-Sicherheit

Interoperabilität

Hardwarebeschleunigung

Hoher Durchsatz

Sichere Firewall

Anwendungen mit hoher Latenz

Erneute Verschlüsselung über mehrere Schritte hinweg
Nachricht Serverauthentifizierung

Clientauthentifizierung

End-to-End-Sicherheit

Interoperabilität

Umfangreiche Ansprüche

Föderation

Mehrstufige Authentifizierung

Benutzerdefinierte Token

Notar/Zeitstempeldienst

Anwendungen mit hoher Latenz

Persistenz von Nachrichtensignaturen
TransportWithMessageCredential Serverauthentifizierung

Clientauthentifizierung

Punkt-zu-Punkt-Sicherheit

Interoperabilität

Hardwarebeschleunigung

Hoher Durchsatz

Rich Client-Claims

Föderation

Mehrstufige Authentifizierung

Benutzerdefinierte Token

Sichere Firewall

Anwendungen mit hoher Latenz

Erneute Verschlüsselung über mehrere Schritte hinweg

In der folgenden Tabelle sind die Bindungen aufgeführt, die die verschiedenen Moduseinstellungen unterstützen. Wählen Sie eine Bindung aus der Tabelle aus, die zum Erstellen Ihres Dienstendpunkts verwendet werden soll.

Verbindlich Unterstützung für den Transportmodus Unterstützung für den Nachrichtenmodus Unterstützung von TransportWithMessageCredential
BasicHttpBinding Ja Ja Ja
WSHttpBinding Ja Ja Ja
WSDualHttpBinding Nein Ja Nein
NetTcpBinding Ja Ja Ja
NetNamedPipeBinding Ja Nein Nein
NetMsmqBinding Ja Ja Nein
MsmqIntegrationBinding Ja Nein Nein
wsFederationHttpBinding Nein Ja Ja

Transportieren von Anmeldeinformationen in Bindungen

In der folgenden Tabelle werden die Typen von Clientanmeldeinformationen aufgeführt, die bei der Nutzung von BasicHttpBinding oder WSHttpBinding im Transportsicherheitsmodus zur Verfügung stehen.

Typ BESCHREIBUNG
Nichts Gibt an, dass der Client keine Anmeldeinformationen präsentieren muss. Dies bedeutet einen anonymen Kunden.
Grundlegend Standardauthentifizierung. Weitere Informationen finden Sie unter RFC 2617 – HTTP-Authentifizierung: Standard- und Digestauthentifizierung, verfügbar unter https://go.microsoft.com/fwlink/?LinkId=84023.
Zusammenfassung Hashwertauthentifizierung. Weitere Informationen finden Sie unter RFC 2617 – HTTP-Authentifizierung: Standard- und Digestauthentifizierung, verfügbar unter https://go.microsoft.com/fwlink/?LinkId=84023.
NTLM NT LAN Manager (NTLM)-Authentifizierung.
Fenster Windows-Authentifizierung.
Zertifikat Authentifizierung, die mit einem Zertifikat ausgeführt wurde.
Ausgestelltes Token Ermöglicht dem Dienst die Authentifizierung des Clients mithilfe eines Tokens, das von einem Sicherheitstokendienst oder von CardSpace ausgestellt wurde. Weitere Informationen finden Sie unter "Partnerverbund" und "Ausgestellte Token".

Clientanmeldeinformationen für Nachrichten in Bindungen

In der folgenden Tabelle werden die Typen von Clientanmeldeinformationen aufgeführt, die bei der Nutzung einer Bindung im Nachrichtensicherheitsmodus zur Verfügung stehen.

Typ BESCHREIBUNG
Nichts Ermöglicht dem Dienst die Interaktion mit anonymen Clients.
Fenster Ermöglicht den Austausch von SOAP-Nachrichten im authentifizierten Kontext einer Windows-Anmeldeinformation.
Nutzername Ermöglicht dem Dienst die Forderung an den Client, sich über eine Benutzernamen-Anmeldeinformation zu authentifizieren. Beachten Sie, dass WCF beim Festlegen des Sicherheitsmodus auf TransportWithMessageCredential das Senden eines Kennwortdigests oder das Ableiten von Schlüsseln mithilfe des Kennworts und die Verwendung solcher Schlüssel für die Sicherheit im Nachrichtenmodus nicht unterstützt. So erzwingt WCF, dass der Transport bei Verwendung von Benutzernamenanmeldeinformationen gesichert ist.
Zertifikat Ermöglicht dem Dienst die Authentifizierung des Clients mithilfe eines Zertifikats.
Ausgestelltes Token Ermöglicht dem Dienst die Verwendung eines Sicherheitstokendiensts zum Bereitstellen eines benutzerdefinierten Tokens.

Siehe auch