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.

Einen Überblick über die WCF-Sicherheit erhalten Sie unter Sicherheitsübersicht. Weitere Informationen zur WCF-Programmierung über Bindungen finden Sie unter Programmieren der WCF-Sicherheit.

Wenn Sie bereits eine Bindung ausgewählt haben, können Sie unter Sicherheitsverhalten in WCF 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

Sicherheitsfeatures 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 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 Element ein Äquivalent.

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

BasicHttp

Verwenden Sie im Code die Klasse BasicHttpBinding; verwenden Sie in der Konfiguration basicHttpBinding Element.

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 (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 Element.

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 Element.

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 Features:

  • 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 Element.

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 Element.

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 element.

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 Element.

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 Klasse WSFederationHttpBinding; verwenden Sie in der Konfiguration WSFederationHttpBinding element.

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 Features aufgeführt, die in der Sicherheitsmoduseinstellung geboten werden, d. h. die Features werden aufgeführt, die bei Festlegung des Sicherheitsmodus auf Transport, Message oder TransportWithMessageCredential verfügbar sind. Verwenden Sie diese Tabelle, um die Sicherheitsfeatures 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

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

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

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 https://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 https://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 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 (None)

Ermöglicht dem Dienst, mit anonymen Clients zu interagieren.

Windows

Ermöglicht SOAP-Nachrichtenaustausch im Rahmen des authentifizierten Kontexts von Windows-Anmeldeinformationen.

Benutzername

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

Konzepte

Sicherheitsübersicht
Wählen eines Typs von Anmeldeinformationen
Sicherheitsverhalten in WCF

Weitere Ressourcen

Sichern von Diensten und Clients
Sicherheitsfunktionen mit benutzerdefinierten Bindungen