Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dienste veröffentlichen häufig Metadaten, um die automatische Generierung und Konfiguration von Clientproxytypen zu ermöglichen. Wenn der Dienst nicht vertrauenswürdig ist, sollten Clientanwendungen überprüfen, ob die Metadaten der Richtlinie der Clientanwendung bezüglich Sicherheit, Transaktionen, der Art des Dienstvertrags usw. entsprechen. Im folgenden Beispiel wird das Schreiben eines Clientendpunktverhaltens veranschaulicht, das den Dienstendpunkt überprüft, um sicherzustellen, dass der Dienstendpunkt sicher zu verwenden ist.
Der Dienst macht vier Dienstendpunkte verfügbar. Der erste Endpunkt verwendet WSDualHttpBinding, der zweite Endpunkt verwendet NTLM-Authentifizierung, der dritte Endpunkt aktiviert den Transaktionsfluss, und der vierte Endpunkt verwendet zertifikatbasierte Authentifizierung.
Der Client verwendet die MetadataResolver Klasse, um die Metadaten für den Dienst abzurufen. Der Client erzwingt eine Richtlinie zur Verhinderung von Duplexbindungen, NTLM-Authentifizierungen und des Transaktionsflusses unter Verwendung von Validierungsverhalten. Für jede ServiceEndpoint-Instanz, die aus den Metadaten des Dienstes importiert wurde, fügt die Clientanwendung eine Instanz des InternetClientValidatorBehavior
Endpunktverhaltens zum ServiceEndpoint hinzu, bevor die Anwendung versucht, einen Windows Communication Foundation (WCF)-Client zum Herstellen einer Verbindung mit dem Endpunkt zu verwenden. Die Validate
-Methode des Verhaltens wird ausgeführt, bevor andere Operationen für den Dienst aufgerufen werden, und sie erzwingt die Clientrichtlinie durch Auslösen der InvalidOperationExceptions
.
So erstellen Sie das Beispiel
- Befolgen Sie zum Erstellen der Lösung die Anweisungen im Erstellen der Windows Communication Foundation-Beispiele.
So führen Sie das Beispiel auf demselben Computer aus
Öffnen Sie eine Entwickler-Eingabeaufforderung für Visual Studio mit Administratorrechten, und führen Sie Setup.bat aus dem Beispielinstallationsordner aus. Dadurch werden alle Zertifikate installiert, die für die Ausführung des Beispiels erforderlich sind.
Führen Sie die Dienstanwendung aus "\service\bin\Debug" aus.
Führen Sie die Clientanwendung aus "\client\bin\Debug" aus. Clientaktivität wird in der Clientkonsolenanwendung angezeigt.
Wenn der Client und der Dienst nicht kommunizieren können, schauen Sie sich Tipps zur Problembehandlung für WCF-Samplesan.
Entfernen Sie die Zertifikate, indem Sie Cleanup.bat ausführen, wenn Sie mit dem Beispiel fertig sind. Andere Sicherheitsbeispiele verwenden dieselben Zertifikate.
So führen Sie das Beispiel computerübergreifend aus
Geben Sie
setup.bat service
auf dem Server in einer Entwickler-Eingabeaufforderung für Visual Studio mit Administratorrechten aus. Wennsetup.bat
mit dem Argumentservice
ausgeführt wird, wird ein Dienstzertifikat mit dem vollqualifizierten Domänennamen des Computers erstellt und das Dienstzertifikat in eine Datei namens Service.cer exportiert.Bearbeiten Sie auf dem Server "App.config", damit es dem neuen Zertifikatsnamen entspricht, Ändern Sie also das
findValue
-Attribut im <serviceCertificate>-Element in den vollqualifizierten Domänennamen des Computers.Kopieren Sie die datei Service.cer aus dem Dienstverzeichnis in das Clientverzeichnis auf dem Clientcomputer.
Öffnen Sie auf dem Client eine Entwickler-Eingabeaufforderung für Visual Studio mit Administratorrechten, und geben Sie folgendes ein
setup.bat client
. Wennsetup.bat
mit dem Argumentclient
ausgeführt wird, wird ein Clientzertifikat namens Client.com erstellt und in eine Datei namens Client.cer exportiert.Ändern Sie in der datei client.cs den Adresswert des MEX-Endpunkts, und legen
findValue
Sie das Standardserverzertifikat so fest, dass es mit der neuen Adresse Ihres Diensts übereinstimmt. Ersetzen Sie dazu localhost durch den vollqualifizierten Domänennamen des Servers. WiederaufbauKopieren Sie die Client.cer Datei aus dem Clientverzeichnis in das Dienstverzeichnis auf dem Server.
Führen Sie auf dem Client ImportServiceCert.bat in einer Entwickler-Eingabeaufforderung für Visual Studio aus, die mit Administratorrechten geöffnet wurde. Dadurch wird das Dienstzertifikat aus der Service.cer-Datei in den Speicher CurrentUser - TrustedPeople importiert.
Führen Sie auf dem Server ImportClientCert.bat in einer Entwickler-Eingabeaufforderung für Visual Studio aus, die mit Administratorrechten geöffnet wurde. Dadurch wird das Clientzertifikat aus der Client.cer Datei in den LocalMachine - TrustedPeople-Speicher importiert.
Erstellen Sie auf dem Dienstcomputer das Dienstprojekt in Visual Studio, und führen Sie service.exeaus.
Führen Sie das Programm client.exeauf dem Clientcomputer aus.
- Wenn der Client und der Dienst nicht kommunizieren können, schauen Sie sich Tipps zur Problembehandlung für WCF-Samplesan.
So stellen Sie den Zustand vor Ausführung des Beispiels wieder her
Führen Sie Cleanup.bat im Beispielordner aus, nachdem Sie die Ausführung des Beispiels abgeschlossen haben.
Hinweis
Dieses Skript entfernt keine Dienstzertifikate auf einem Client, wenn dieses Beispiel auf computernübergreifend ausgeführt wird. Wenn Sie WCF-Beispiele ausgeführt haben, die Zertifikate über mehrere Computer hinweg verwenden, sollten Sie unbedingt die Dienstzertifikate löschen, die im Speicher unter CurrentUser und TrustedPeople installiert wurden. Verwenden Sie dazu den folgenden Befehl:
certmgr -del -r CurrentUser -s TrustedPeople -c -n <Fully Qualified Server Machine Name>. For example: certmgr -del -r CurrentUser -s TrustedPeople -c -n server1.contoso.com
.