Übersicht über die Transportsicherheit

Transportsicherheitsmechanismen in Windows Communication Foundation (WCF) hängen von der Bindung und dem nachfolgenden Transport ab. Wenn Sie z. B. die WSHttpBinding-Klasse verwenden, lautet der Transportmechanismus HTTP und der primäre Mechanismus zum Sichern des Transports SSL über HTTP, allgemein als HTTPS bezeichnet. In diesem Thema werden die wichtigsten Sicherheitsmechanismen beschrieben, die für die vom WCF-System bereitgestellten Bindungen verwendet werden.

Tipp

Wenn SSL-Sicherheit in Verbindung mit .NET Framework 3.5 und höher verwendet wird, verwendet ein WCF-Client zur Überprüfung des Dienstzertifikats mittels einer Zertifikatskette sowohl die Zwischenzertifikate aus dem lokalen Zertifikatspeicher als auch die Zwischenzertifikate, die sie im Rahmen der SSL-Verhandlung empfangen haben. .Beim Einsatz von .NET Framework 3.0 werden nur die im lokalen Zertifikatspeicher installierten Zwischenzertifikate verwendet.

BasicHttpBinding

Die BasicHttpBinding-Klasse bietet standardmäßig keine Sicherheit. Diese Bindung ist für die Interoperabilität mit Webdienstanbietern ausgelegt, die keine Sicherheit implementieren. Sie können jedoch die Sicherheit aktivieren, indem Sie die Mode-Eigenschaft auf einen beliebigen Wert außer None festlegen. Wenn Sie die Transportsicherheit aktivieren möchten, legen Sie die Eigenschaft auf Transport fest.

Interoperieren mit IIS

Die BasicHttpBinding-Klasse wird hauptsächlich für die Interoperation mit bereits vorhandenen Webdiensten verwendet. Viele dieser Dienste werden von Internetinformationsdienste (IIS) gehostet. Deshalb ist die Transportsicherheit für diese Bindung auf die nahtlose Interoperation mit IIS-Websites ausgerichtet. Dies geschieht durch Festlegen des Sicherheitsmodus auf Transport und anschließendes Festlegen des Client-Anmeldeinformationstyps. Die Werte für die Anmeldeinformationstypen entsprechen den IIS-Verzeichnissicherheitsmechanismen. Der folgende Code zeigt den festgelegten Modus und einen Anmeldeinformationstyp, der auf Windows festgelegt ist. Sie können diese Konfiguration verwenden, wenn sich Client und Server in derselben Windows-Domäne befinden.

Oder in der Konfiguration:

<bindings>
  <basicHttpBinding>
    <binding name="SecurityByTransport">
      <security mode="Transport">
        <transport clientCredentialType="Windows" />
       </security>
     </binding>
  </basicHttpBinding>
</bindings>

In den folgenden Abschnitten werden andere Client-Anmeldeinformationstypen erläutert.

Standard

Dies entspricht der Authentifizierungsmethode Standard in IIS. Wenn Sie diesen Modus verwenden, muss der IIS-Server mit Windows-Benutzerkonten und den entsprechenden NTFS-Dateisystemberechtigungen konfiguriert sein. Weitere Informationen über IIS 6.0 finden Sie unter Enabling Basic Authentication and Configuring the Realm Name (Seite ist möglicherweise nur in englischer Sprache verfügbar). Weitere Informationen über IIS 7.0 finden Sie unter IIS 7.0 Beta: Configure Basic Authentication (Seite ist möglicherweise nur in englischer Sprache verfügbar).

Zertifikat (Certificate)

IIS verfügt über eine Option, mit der sich die Clients mit einem Zertifikat anmelden müssen. Mit diesem Feature können die Internetinformationsdienste auch einem Windows-Konto ein Clientzertifikat zuordnen. Weitere Informationen über IIS 6.0 finden Sie unter Enabling Client Certificates in IIS 6.0 (Seite ist möglicherweise nur in englischer Sprache verfügbar). Weitere Informationen über IIS 7.0 finden Sie unter IIS 7.0 Beta: Configuring Server Certificates in IIS 7.0 (Seite ist möglicherweise nur in englischer Sprache verfügbar).

Digest

Die Digest-Authentifizierung ähnelt der Standardauthentifizierung, bietet jedoch den Vorteil, die Anmeldeinformationen als Hash zu senden und nicht als Klartext. Weitere Informationen über IIS 6.0 finden Sie unter Digest Authentication in IIS 6.0 (Seite ist möglicherweise nur in englischer Sprache verfügbar). Weitere Informationen über IIS 7.0 finden Sie unter IIS 7.0 Beta: Configure Digest Authentication (Seite ist möglicherweise nur in englischer Sprache verfügbar).

Windows

Dies entspricht der integrierten Windows-Authentifizierungsmethode in IIS. Bei dieser Methode muss sich auch der Server in einer Windows-Domäne befinden, die das Kerberos-Protokoll als Domänencontroller verwendet. Falls sich der Server nicht in einer Kerberos-Domäne befindet oder falls das Kerberos-System fehlschlägt, können Sie den im nächsten Abschnitt beschriebenen NTLM-Wert verwenden. Weitere Informationen über IIS 6.0 finden Sie unter Integrated Windows Authentication in IIS 6.0 (Seite ist möglicherweise nur in englischer Sprache verfügbar). Weitere Informationen über IIS 7.0 finden Sie unter IIS 7.0 Beta: Configuring Server Certificates in IIS 7.0 (Seite ist möglicherweise nur in englischer Sprache verfügbar).

NTLM

Mit dieser Einstellung kann der Server NTLM für die Authentifizierung verwenden, falls das Kerberos-Protokoll fehlschlägt. Weitere Informationen über das Konfigurieren von IIS in IIS 6.0 finden Sie unter Forcing NTLM Authentication (Seite ist möglicherweise nur in englischer Sprache verfügbar). Im Falle von IIS 7.0 schließt die Windows-Authentifizierung die NTLM-Authentifizierung ein. Weitere Informationen finden Sie unter IIS 7.0 Beta: Configuring Server Certificates in IIS 7.0 (Seite ist möglicherweise nur in englischer Sprache verfügbar).

WsHttpBinding

Die WSHttpBinding-Klasse ist für die Zusammenarbeit mit Diensten vorgesehen, die WS-*-Spezifikationen implementieren. Die Transportsicherheit für diese Bindung ist SSL (Secure Sockets Layer) über HTTP oder HTTPS. Um eine WCF-Anwendung zu erstellen, die SSL verwendet, verwenden Sie IIS, um die Anwendung zu hosten. Wenn Sie eine selbst gehostete Anwendung erstellen, können Sie mit dem Tool HttpCfg.exe ein X.509-Zertifikat an einen bestimmten Anschluss eines Computers binden. Die Anschlussnummer wird als Teil der WCF-Anwendung als Endpunktadresse angegeben. Bei Verwendung des Transportmodus muss die Endpunktadresse das HTTPS-Protokoll enthalten. Andernfalls wird zur Laufzeit eine Ausnahme ausgelöst. Weitere Informationen finden Sie unter HTTP-Transportsicherheit.

Legen Sie zur Clientauthentifizierung die ClientCredentialType-Eigenschaft der HttpTransportSecurity-Klasse auf einen der HttpClientCredentialType-Enumerationswerte fest. Die Enumerationswerte sind identisch mit den Client-Anmeldeinformationstypen für BasicHttpBinding und sind darauf ausgerichtet, mit IIS-Diensten gehostet zu werden.

Das folgende Beispiel zeigt die mit einem Client-Anmeldeinformationstyp von Windows verwendete Bindung.

WSDualHttpBinding

Diese Bindung bietet lediglich Sicherheit auf Nachrichtenebene, nicht Sicherheit auf Transportebene.

NetTcpBinding

Die NetTcpBinding-Klasse verwendet TCP für den Nachrichtentransport. Die Sicherheit für den Transportmodus wird über die Implementierung von TLS über TCP bereitgestellt. Die TLS-Implementierung wird vom Betriebssystem bereitgestellt.

Sie können auch den Client-Anmeldeinformationstyp angeben, indem Sie die ClientCredentialType-Eigenschaft der TcpTransportSecurity-Klasse auf einen der TcpClientCredentialType-Werte festlegen, wie im folgenden Code dargestellt.

Clientseitig

Auf dem Client müssen Sie mit der SetCertificate-Methode der X509CertificateInitiatorClientCredential-Klasse ein Zertifikat angeben.

Tipp

Wenn Sie die Windows-Sicherheit verwenden, ist kein Zertifikat erforderlich.

Der folgende Code verwendet den Fingerabdruck des Zertifikats, der es als einzigartig identifiziert. Weitere Informationen über Zertifikate finden Sie unter Verwenden von Zertifikaten.

Sie können das Zertifikat auch in der Konfiguration des Clients angeben. Verwenden Sie dazu ein clientCredentials element im Verhaltensabschnitt.

<behaviors>
  <behavior>
   <clientCredentials>
     <clientCertificate findValue= "101010101010101010101010101010000000000" 
      storeLocation="LocalMachine" storeName="My" 
      X509FindType="FindByThumbPrint"/>
     </clientCertificate>
   </clientCredentials>
 </behavior>
</behaviors>  

NetNamedPipeBinding

Die NetNamedPipeBinding-Klasse ist für eine effiziente Kommunikation zwischen verschiedenen Computern ausgerichtet, d. h. für Prozesse, die auf demselben Computer ausgeführt werden, obwohl zwischen zwei Computern im selben Netzwerk Named Pipe-Kanäle erstellt werden können. Diese Bindung bietet lediglich Sicherheit auf Transportebene. Wenn Sie mit dieser Bindung Anwendungen erstellen, müssen die Endpunktadressen "net.pipe" als Protokoll der Endpunktadresse enthalten.

WSFederationHttpBinding

Wenn Sie die Transportsicherheit verwenden, verwendet diese Bindung SSL über HTTP, bekannt als HTTPS mit einem ausgestellten Token (TransportWithMessageCredential). Weitere Informationen über Verbundanwendungen finden Sie unter Verbund und ausgestellte Token.

NetPeerTcpBinding

Die NetPeerTcpBinding-Klasse stellt einen sicheren Transportmechanismus dar, ausgerichtet auf eine effektive Kommunikation, die das Peer-to-Peer-Netzwerkfeature verwendet. Wie anhand des Namens der Klasse und der Bindung angegeben, ist TCP das Protokoll. Wenn der Sicherheitsmodus auf Transport festgelegt ist, implementiert die Bindung TLS über TCP. Weitere Informationen über das Peer-to-Peer-Feature finden Sie unter Peer-to-Peer-Netzwerke.

MsmqIntegrationBinding und NetMsmqBinding

Eine vollständige Erläuterung der Transportsicherheit mit Message Queuing (früher als MSMQ bezeichnet) finden Sie unter Sichern von Nachrichten mit Transportsicherheit.

Siehe auch

Konzepte

Programmieren der WCF-Sicherheit