Bindungen und Sicherheit

Die vom System bereitgestellten, in Windows Communication Foundation (WCF) integrierten Bindungen bieten eine schnelle Möglichkeit, WCF-Anwendungen 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 Übersicht über die Sicherheit.Weitere Informationen finden Sie unter zur Programmierung von WCF mit Bindungen finden Sie unter Programmieren der WCF-Sicherheit.

Wenn Sie bereits eine Bindung ausgewählt haben, können Sie unter Sicherheitsverhalten mehr über die der Sicherheit zugehörigen Laufzeitverhalten erfahren.

Einige Sicherheitsfunktionen sind mit den vom System bereitgestellten Bindungen nicht programmierbar.Weitere Informationen über die Kontrolle durch benutzerdefinierte Bindungen 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 bereitgestellte Bindungen.Weitere Informationen finden Sie unter zu benutzerdefinierten 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.WSHttpBinding (API) hat z. B. in <wsHttpBinding> ein Äquivalent.

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

BasicHttp

Verwenden Sie im Code die Klasse BasicHttpBinding; verwenden Sie in der Konfiguration <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) (http:\/\/go.microsoft.com\/fwlink\/?LinkId=38955 (möglicherweise in englischer Sprache)).

  • 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, Digest und integrierte Windows-Sicherheit.Weitere Informationen finden Sie unterÜbersicht über die Transportsicherheit.Diese Bindung unterstützt Folgendes:

  • HTTPS-Transportsicherheit.

  • HTTP-Standardauthentifizierung

  • WS-Sicherheit.

Weitere Informationen finden Sie unter BasicHttpSecurity, BasicHttpMessageSecurity, BasicHttpMessageCredentialType und BasicHttpSecurityMode.

WSHttpBinding

Verwenden Sie im Code die Klasse WSHttpBinding; verwenden Sie in der Konfiguration <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, HttpClientCredentialType und HttpProxyCredentialType.

WSDualHttpBinding

Verwenden Sie im Code die Klasse WSDualHttpBinding; verwenden Sie in der Konfiguration <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 Klasse NetTcpBinding; verwenden Sie in der Konfiguration <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 Klasse NetNamedPipeBinding; verwenden Sie in der Konfiguration <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 Klasse MsmqIntegrationBinding; verwenden Sie in der Konfiguration <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 Klasse NetMsmqBinding; verwenden Sie in der Konfiguration <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 MessageCredentialType-Anmeldeinformationen werden nur unterstützt, wenn der Sicherheitsmodus entweder auf NetMsmqSecurityMode oder auf NetMsmqSecurityMode festgelegt ist.

Weitere Informationen finden Sie unter MessageSecurityOverMsmq und MsmqTransportSecurity.

WSFederationHttpBinding

Verwenden Sie im Code die Klasse WSFederationHttpBinding; verwenden Sie in der Konfiguration <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 unterSicherheitsfunktionen 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 Funktionen
Transport Serverauthentifizierung

Clientauthentifizierung

Point-to-Point-Sicherheit

Interoperabilität

Hardwarebeschleunigung.

Hoher Durchsatz

Sichere Firewall

Hohe-Wartezeit-Anwendungen

Wiederverschlüsselung über mehrere Hops
Nachricht Serverauthentifizierung

Clientauthentifizierung

End-to-End-Sicherheit

Interoperabilität

Rich Claims

Verbund

Mehrfaktoren-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

Mehrfaktoren-Authentifizierung

Benutzerdefinierte Token

Sichere Firewall

Hohe-Wartezeit-Anwendungen

Wiederverschlüsselung über mehrere Hops

In der folgenden Tabelle werden die Bindungen, die die verschiedenen Moduseinstellungen unterstützen, aufgeführt.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 Nein Ja Nein
NetTcpBinding Ja Yes 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
Keine Gibt an, dass der Client keine Anmeldeinformationen präsentieren muss.Dies führt zur Verwendung eines anonymen Clients.
Standard Standardauthentifizierung.Weitere Informationen finden Sie unter RFC 2617, HTTP-Authentifizierung: Standard- und Digestauthentifizierung, verfügbar unter http:\/\/go.microsoft.com\/fwlink\/?LinkId=84023 (möglicherweise in englischer Sprache).
Digest Digestauthentifizierung.Weitere Informationen finden Sie unter RFC 2617, HTTP-Authentifizierung: Standard- und Digestauthentifizierung, verfügbar unter http:\/\/go.microsoft.com\/fwlink\/?LinkId=84023 (möglicherweise in englischer Sprache).
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 unterVerbund 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 (None) Ermöglicht dem Dienst, mit anonymen Clients zu interagieren.
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.Bitte beachten Sie, dass bei einer Festlegung des Sicherheitsmodus auf TransportWithMessageCredential, WCF das Senden eines Kennwortdigest oder die Ableitung von Schlüsseln über das Kennwort und die Verwendung solcher Schlüssel für die Nachrichtenmodussicherheit nicht unterstützt werden.WCF setzt prinzipiell durch, dass der Transport gesichert wird, wenn er Benutzernamen-Anmeldeinformationen verwendet.
Zertifikat Ermöglicht es 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

Übersicht über die Sicherheit
Sichern von Diensten und Clients
Wählen eines Typs von Anmeldeinformationen
Sicherheitsfunktionen mit benutzerdefinierten Bindungen
Sicherheitsverhalten
Sicherheitsmodell für Windows Server AppFabric