Transportsicherheit mit Windows-Authentifizierung
Das folgende Szenario zeigt einen Windows Communication Foundation (WCF)-Client und -Dienst, die durch die Windows-Sicherheit geschützt werden. Weitere Informationen zur Programmierung finden Sie unter Gewusst wie: Sichern eines Dienstes mit Windows-Anmeldeinformationen.
Ein Intranetwebdienst zeigt Personalinformationen an. Der Client ist eine Windows Forms-Anwendung. Die Anwendung wird in einer Domäne mit einem Kerberos-Controller bereitgestellt, der die Domäne sichert.
Merkmal | Beschreibung |
---|---|
Sicherheitsmodus |
Transport |
Interoperabilität |
nur WCF |
Authentifizierung (Server) Authentifizierung (Client) |
Ja (mithilfe der integrierten Windows-Authentifizierung) Ja (mithilfe der integrierten Windows-Authentifizierung) |
Integrität |
Ja |
Vertraulichkeit |
Ja |
Transport |
NET.TCP |
Bindung |
Dienst
Der folgende Code und die Konfiguration werden unabhängig voneinander ausgeführt. Führen Sie einen der folgenden Schritte aus:
- Erstellen Sie einen separaten Dienst, indem Sie den Code ohne Konfiguration verwenden.
- Erstellen Sie mit der angegebenen Konfiguration einen Dienst, aber definieren Sie keine Endpunkte.
Code
Im folgenden Code wird gezeigt, wie ein Dienstendpunkt, der Windows-Sicherheit verwendet, erstellt wird.
Konfiguration
Die folgende Konfiguration kann statt des Codes verwendet werden, um den Dienstendpunkt einzurichten:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<behaviors />
<services>
<service behaviorConfiguration="" name="ServiceModel.Calculator">
<endpoint address="net.tcp://localhost:8008/Calculator"
binding="netTcpBinding"
bindingConfiguration="WindowsClientOverTcp"
name="WindowsClientOverTcp"
contract="ServiceModel.ICalculator" />
</service>
</services>
<bindings>
<netTcpBinding>
<binding name="WindowsClientOverTcp">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
</bindings>
<client />
</system.serviceModel>
</configuration>
Client
Der folgende Code und die folgende Konfiguration werden unabhängig voneinander ausgeführt. Führen Sie einen der folgenden Schritte aus:
- Erstellen Sie mit dem Code (und dem Clientcode) einen eigenständigen Client.
- Erstellen Sie einen Client, der keine Endpunktadressen definiert. Verwenden Sie stattdessen den Clientkonstruktor, der den Konfigurationsnamen als Argument verwendet. Beispiel:
Code
Der folgende Code erstellt den Client. Die Bindung ist für die Verwendung der Transportmodussicherheit mit dem TCP-Transport konfiguriert, wobei der Clientanmeldeinformationstyp auf Windows festgelegt ist.
Konfiguration
Die folgende Konfiguration kann statt des Codes verwendet werden, um den Client zu erstellen.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="NetTcpBinding_ICalculator" >
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint address="net.tcp://localhost:8008/Calculator"
binding="netTcpBinding"
bindingConfiguration="NetTcpBinding_ICalculator"
contract="ICalculator"
name="NetTcpBinding_ICalculator">
</endpoint>
</client>
</system.serviceModel>
</configuration>
Siehe auch
Aufgaben
Gewusst wie: Sichern eines Dienstes mit Windows-Anmeldeinformationen