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 über 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
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 über 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 Sicherheitsfunktionen 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 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 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 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 |
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. |
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
Konzepte
Sicherheitsübersicht
Wählen eines Typs von Anmeldeinformationen
Sicherheitsverhalten in WCF
Weitere Ressourcen
Sichern von Diensten und Clients
Sicherheitsfunktionen mit benutzerdefinierten Bindungen
Sicherheitsmodell für Windows Server AppFabric