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