Bindungen und Sicherheit

Die systembasierten Bindungen, die in Windows Communication Foundation (WCF) enthalten sind, bieten eine gute Möglichkeit, um WCF-Anwendungen schnell zu programmieren. Mit einer Ausnahme haben alle Bindungen ein standardmäßig aktiviertes Sicherheitsschema. Dieses Thema hilft Ihnen, die richtige Bindung für die benötigte Sicherheit 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 Programmieren der WCF-Sicherheit.

Wenn Sie bereits eine Bindung ausgewählt haben, finden Sie weitere Informationen zu den Runtimeverhaltensweisen, die der Sicherheit in Sicherheitsverhalten zugeordnet sind.

Einige Sicherheitsfunktionen sind mit den vom System bereitgestellten Bindungen nicht programmierbar. Weitere Informationen zur Steuerung mithilfe einer benutzerdefinierten Bindung finden Sie unter Sicherheitsfunktionen mit benutzerdefinierten Bindungen.

Sicherheitsfunktionen von Bindungen

WCF bietet einige vom System bereitgestellte Bindungen, die die meisten Bedürfnisse erfüllen. Wenn eine bestimmte Bindung nicht ausreicht, können Sie auch eine benutzerdefinierte Bindung erstellen. Eine Liste der vom System bereitgestellten Bindungen finden Sie unter Vom System bereitgestellten Bindungen. Weitere Informationen zum Erstellen benutzerdefinierter Bindungen finden Sie unter Benutzerdefinierte Bindungen.

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

Der folgende Abschnitt führt beide Formen einer Bindung auf und fasst die Sicherheitsfunktionen zusammen.

BasicHttp

Verwenden Sie im Code die BasicHttpBinding-Klasse, und verwenden Sie in der Konfiguration die Klasse <basicHttpBinding>.

Diese Bindung ist für die Verwendung mit vielen verschiedenen vorhandenen Technologien vorgesehen, u. a. mit:

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

  • Webdienststeigerungen (WSE)-Anwendungen.

  • Grundlegendes Profil gemäß der Webdienst-Interoperabilitätsspezifikation (WS-I) (https://go.microsoft.com/fwlink/?LinkId=38955).

  • Standardsicherheitsprofil gemäß der Definition in WS-I.

Standardmäßig ist diese Bindung nicht sicher. Sie ist darauf ausgelegt, mit ASMX-Diensten zusammenzuarbeiten. Wenn die Sicherheit aktiviert ist, ist die Bindung für eine nahtlose Interoperabilität mit Internet Information Services (IIS)-Sicherheitsmechanismen ausgelegt, z. B. Standardauthentifizierung, Hashwert und integrierte Windows-Sicherheit. Weitere Informationen finden Sie unter Transportsicherheitsübersicht. Diese Bindung unterstützt Folgendes:

  • HTTPS-Transportsicherheit.

  • HTTP-Standardauthentifizierung

  • WS-Sicherheit.

Weitere Informationen finden Sie unterBasicHttpSecurity, BasicHttpMessageSecurity, BasicHttpMessageCredentialTypeund BasicHttpSecurityMode.

WSHttpBinding

Verwenden Sie im Code die WSHttpBinding-Klasse, und verwenden Sie in der Konfiguration die Klasse <wsHttpBinding>.

Standardmäßig implementiert diese Bindung die WS-Sicherheitsspezifikation und bietet Interoperabilität mit Diensten, die die WS-*-Spezifikationen implementieren. Sie unterstützt Folgendes:

  • HTTPS-Transportsicherheit.

  • WS-Sicherheit.

  • HTTPS-Transportschutz mit SOAP-Nachrichten-Anmeldeinformationen-Sicherheit zur Authentifizierung des Anrufers.

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

WSDualHttpBinding

Verwenden Sie im Code die WSDualHttpBinding-Klasse, und verwenden Sie in der Konfiguration die Klasse <wsDualHttpBinding>.

Diese Bindung wird entworfen, um Duplexdienstanwendungen zu aktivieren. Diese Bindung implementiert die WS-Sicherheitsspezifikation für nachrichtenbasierte Übertragungssicherheit. Transportsicherheit ist nicht verfügbar. Standardmäßig gibt es die folgenden Funktionen:

  • Implementiert WS-Reliable Messaging für Zuverlässigkeit.

  • Implementiert WS-Sicherheit für die Übertragungssicherheit und zur Authentifizierung.

  • Verwendet HTTP zur Nachrichtenübermittlung.

  • Verwendet Text/XML-Nachrichtencodierung.

Beim Verwenden von WS-Sicherheit (Nachrichtenebenen-Sicherheit) ermöglicht die Bindung die Konfiguration der folgenden Parameter:

  • der Sicherheitsalgorithmus-Suite, um den Kryptografiesatz 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, und verwenden Sie in der Konfiguration die Klasse <netTcpBinding>.

Diese Bindung ist für die computerübergreifende Kommunikation optimiert. Standardmäßig besitzt sie folgende Eigenschaften:

  • Implementiert Transport Layer Security.

  • Setzt Windows-Sicherheit für die Übertragungssicherheit und zur Authentifizierung ein.

  • Verwendet TCP für Transport.

  • Implementiert binäre Nachrichtencodierung.

  • Implementiert WS-Reliable Messaging.

Es gibt folgende Optionen:

  • 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, und verwenden Sie in der Konfiguration die Klasse <netNamedPipeBinding>.

Diese Bindung ist für prozessübergreifende Kommunikation (normalerweise auf dem gleichen Computer) optimiert. Standardmäßig besitzt diese Bindung folgende Eigenschaften:

  • Verwendet Transportsicherheit für die Nachrichtenübertragung und zur Authentifizierung.

  • Verwendet Named Pipes zur Nachrichtenübermittlung.

  • Implementiert binäre Nachrichtencodierung.

  • Verschlüsselung und Nachrichtensignierung.

Es gibt folgende Optionen:

  • Authentifizierung über Windows-Sicherheit.

Weitere Informationen finden Sie unter NetNamedPipeSecurity, NetNamedPipeSecurityMode und NamedPipeTransportSecurity.

MsmqIntegrationBinding

Verwenden Sie im Code die MsmqIntegrationBinding-Klasse, und verwenden Sie in der Konfiguration die Klasse <msmqIntegrationBinding>.

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

Standardmäßig verwendet diese Bindung Transportsicherheit und stellt die folgenden Sicherheitseigenschaften 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, und verwenden Sie in der Konfiguration die Klasse <netMsmqBinding>.

Diese Bindung ist für den Einsatz beim Erstellen von WCF-Diensten gedacht, die MSMQ Queued Message-Support benötigen.

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

  • Sicherheit kann deaktiviert werden (Keine).

  • MSMQ-Transportsicherheit (Transport).

  • SOAP-basierte Nachrichtensicherheit (Nachricht).

  • Gleichzeitige Transport- und Nachrichtensicherheit (Beides).

  • Unterstützte Typen von Clientanmeldeinformationen: Keine, Windows, UserName, Zertifikat, IssuedToken.

Die Certificate-Anmeldeinformationen werden nur unterstützt, wenn der Sicherheitsmodus entweder auf Both oder auf Message festgelegt ist.

Weitere Informationen finden Sie unter MessageSecurityOverMsmq und MsmqTransportSecurity.

WSFederationHttpBinding

Verwenden Sie im Code die WSFederationHttpBinding-Klasse, und verwenden Sie in der Konfiguration die Klasse <wsFederationHttpBinding>.

Standardmäßig verwendet diese Bindung WS-Sicherheit (Nachrichtenebenen-Sicherheit).

Weitere Informationen finden Sie unter Verbund, WSFederationHttpSecurity und WSFederationHttpSecurityMode.

Benutzerdefinierte Bindungen

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

Bindungsmöglichkeiten

In der folgenden Tabelle werden die Funktionen aufgeführt, die in der Sicherheitsmoduseinstellung geboten werden, d. h. die Funktionen werden aufgeführt, die bei Festlegung des Sicherheitsmodus auf Transport, Message oder TransportWithMessageCredential verfügbar sind. Verwenden Sie diese Tabelle, um die Sicherheitsfunktionen zu finden, die von der Anwendung benötigt werden.

Einstellung Features
Transport Serverauthentifizierung

Clientauthentifizierung

Point-to-Point-Sicherheit

Interoperabilität

Hardwarebeschleunigung.

Hoher Durchsatz

Sichere Firewall

Hohe-Wartezeit-Anwendungen

Wiederverschlüsselung über mehrere Hops
Meldung Serverauthentifizierung

Clientauthentifizierung

End-to-End-Sicherheit

Interoperabilität

Rich Claims

Verbund

Mehrstufige Authentifizierung

Benutzerdefinierte Token

Notar-/Timestampdienst

Hohe-Wartezeit-Anwendungen

Beständigkeit von Nachrichtensignaturen
TransportWithMessageCredential Serverauthentifizierung

Clientauthentifizierung

Point-to-Point-Sicherheit

Interoperabilität

Hardwarebeschleunigung.

Hoher Durchsatz

Rich Client-Claims

Verbund

Mehrstufige Authentifizierung

Benutzerdefinierte Token

Sichere Firewall

Hohe-Wartezeit-Anwendungen

Wiederverschlüsselung über mehrere Hops

In der folgenden Tabelle werden die Bindungen aufgeführt, die die verschiedenen Moduseinstellungen unterstützen. Wählen Sie eine Bindung aus der Tabelle aus, die verwendet werden soll, um den Dienstendpunkt zu erstellen.

Bindung Transportmodus-Support Nachrichtenmodus-Support TransportWithMessageCredential-Unterstützung
BasicHttpBinding Ja Ja Ja
WSHttpBinding Ja Ja Ja
WSDualHttpBinding Keine Ja Keine
NetTcpBinding Ja Ja Ja
NetNamedPipeBinding Ja Nr. Nein
NetMsmqBinding Ja Ja Keine
MsmqIntegrationBinding Ja Nr. Nr.
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
Keine Gibt an, dass der Client keine Anmeldeinformationen präsentieren muss. Dies führt zur Verwendung eines anonymen Clients.
Basic Standardauthentifizierung. Weitere Informationen finden Sie unter „RFC2617 – HTTP-Authentifizierung: Standard- und Digestauthentifizierung“, verfügbar unter https://go.microsoft.com/fwlink/?LinkId=84023.
Digest Hashwertauthentifizierung. Weitere Informationen finden Sie unter „RFC2617 – HTTP-Authentifizierung: Standard- und Digestauthentifizierung“, verfügbar unter https://go.microsoft.com/fwlink/?LinkId=84023.
NTLM NT-LAN-Manager (NTLM)-Authentifizierung.
Windows Windows-Authentifizierung.
Zertifikat Die Authentifizierung fand über ein Zertifikat statt.
IssuedToken Ermöglicht dem Dienst die Forderung, dass der Client über ein Token, das von einem Sicherheitstokendienst oder von CardSpace ausgestellt wurde, authentifiziert werden muss. Weitere Informationen finden Sie unter Verbund 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
Keine Ermöglicht dem Dienst die Interaktion mit anonymen Clients.
Windows Ermöglicht SOAP-Nachrichtenaustausch im Rahmen des authentifizierten Kontexts von Windows-Anmeldeinformationen.
UserName Ermöglicht dem Dienst die Forderung an den Client, sich über eine Benutzernamen-Anmeldeinformation zu authentifizieren. Beachten Sie, dass WCF, wenn der Sicherheitsmodus auf TransportWithMessageCredential festgelegt ist, das Senden eines Kennwortdigests oder die Ableitung von Schlüsseln unter Verwendung eines Kennworts und die Verwendung solcher Schlüssel für die Sicherheit im Nachrichtenmodus nicht unterstützt. WCF erzwingt, dass der Datentransport geschützt wird, wenn als Anmeldeinformationen der Benutzername verwendet wird.
Zertifikat Ermöglicht dem Dienst, die Forderung zu stellen, dass der Client über ein Zertifikat authentifiziert werden muss.
IssuedToken Ermöglicht es dem Dienst, einen Sicherheitstokendienst zu verwenden, um ein benutzerdefiniertes Token zu liefern.

Siehe auch