Freigeben über


Clientüberprüfung

Dienste veröffentlichen häufig Metadaten, um die automatische Generierung und Konfiguration von Clientproxytypen zu aktivieren. Wenn der Dienst nicht vertrauenswürdig ist, sollten Clientanwendungen überprüfen, dass die Metadaten den Richtlinien der Clientanwendung in Bezug auf Sicherheit, Transaktionen, Typ des Servicevertrags usw. entsprechen. Das folgende Beispiel veranschaulicht das Schreiben eines Clientendpunktverhaltens, das den Dienstendpunkt überprüft, um zu gewährleisten, dass der Dienstendpunkt sicher verwendet werden kann.

Der Dienst macht vier Dienstendpunkte verfügbar. Der erste Endpunkt verwendet die WSDualHttpBinding, der zweite Endpunkt verwendet die NTLM-Authentifizierung, der dritte Endpunkt aktiviert den Transaktionsfluss, und der vierte Endpunkt verwendet die 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 Überprüfungsverhalten. Für jede ServiceEndpoint-Instanz, die aus den Metadaten des Diensts importiert wurde, fügt die Clientanwendung eine Instanz des InternetClientValidatorBehavior-Endpunktverhaltens zu dem ServiceEndpoint hinzu, bevor versucht wird, einen Windows Communication Foundation (WCF)-Client für die 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

  1. Folgen Sie zum Erstellen der Lösung den unter Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

So führen Sie das Beispiel auf demselben Computer aus

  1. Führen Sie "Setup.bat" im Beispielinstallationsordner aus. Dadurch werden alle Zertifikate, die zum Ausführen des Beispiels erforderlich sind, installiert.

  2. Führen Sie die Dienstanwendung in "\service\bin\Debug" aus.

  3. Führen Sie die Clientanwendung in "\client\bin\Debug" aus. In der Clientkonsolenanwendung wird Clientaktivität angezeigt.

  4. Falls der Client und der Dienst nicht miteinander kommunizieren können, finden Sie weitere Informationen unter Hinweise zur Fehlerbehebung.

  5. Wenn Sie mit dem Beispiel fertig sind, führen Sie die Datei "Cleanup.bat" aus, um die Zertifikate zu entfernen. In anderen Sicherheitsbeispielen werden die gleichen Zertifikate verwendet.

So führen Sie das Beispiel computerübergreifend aus

  1. Geben Sie auf dem Server setup.bat service ein. Durch Ausführen von setup.bat mit dem Argument service wird ein Dienstzertifikat mit dem vollqualifizierten Domänennamen des Computers erstellt und das Dienstzertifikat in eine Datei namens "Service.cer" exportiert.

  2. Bearbeiten Sie auf dem Server "App.config", damit es dem neuen Zertifikatsnamen entspricht, Ändern Sie dazu das findValue-Attribut im <serviceCertificate> of <serviceCredentials> Element-Element so, dass es dem vollqualifizierten Domänennamen des Computers entspricht.

  3. Kopieren Sie die Datei "Service.cer" aus dem Dienstverzeichnis in das Clientverzeichnis auf dem Clientcomputer.

  4. Geben Sie auf dem Client setup.bat client ein. Durch Ausführen von setup.bat mit dem Argument client wird ein Dienstzertifikat mit der Bezeichnung "Client.com" erstellt und das Dienstzertifikat in eine Datei namens "Client.cer" exportiert.

  5. Ändern Sie in der Datei "client.cs" den Adresswert des MEX-Endpunkts und den findValue, um das Standardserverzertifikat so festzulegen, das es der neuen Adresse des Diensts entspricht. Ersetzen Sie dazu "localhost" durch den vollqualifizierten Domänennamen des Servers. Erstellen Sie sie neu.

  6. Kopieren Sie die Datei "Client.cer" aus dem Clientverzeichnis in das Dienstverzeichnis auf dem Server.

  7. Führen Sie auf dem Client "ImportServiceCert.bat" aus. Dadurch wird das Dienstzertifikat aus der Datei "Service.cer" in den CurrentUser – TrustedPeople-Speicher importiert.

  8. Führen Sie auf dem Server "ImportClientCert.bat" aus. Dadurch wird das Clientzertifikat aus der Datei "Client.cer" in den LocalMachine-TrustedPeople-Speicher importiert.

  9. Erstellen Sie auf dem Dienstcomputer das Dienstprojekt in Visual Studio, und führen Sie "service.exe" aus.

  10. Führen Sie auf dem Clientcomputer "client.exe" aus.

    1. Wenn der Client und der Dienst nicht miteinander kommunizieren können, finden Sie weitere Informationen unter Hinweise zur Fehlerbehebung.

So bereinigen Sie nach dem Beispiel

  • Führen Sie "Cleanup.bat" im Beispielordner aus, nachdem Sie das Beispiel fertig ausgeführt haben.

    Tipp

    Wenn dieses Beispiel computerübergreifend ausgeführt wird, entfernt dieses Skript keine Dienstzertifikate auf einem Client. Wenn Sie WCF-Beispiele ausgeführt haben, die Zertifikate computerübergreifend verwenden, müssen Sie sicherstellen, dass Sie die Dienstzertifikate entfernen, die im CurrentUser-TrustedPeople-Speicher installiert wurden. Führen Sie dazu folgenden Befehl aus: certmgr -del -r CurrentUser -s TrustedPeople -c -n <Name des vollqualifizierten Serverrechners>. Beispielsweise: certmgr -del -r CurrentUser -s TrustedPeople -c -n server1.contoso.com.

Siehe auch

Weitere Ressourcen

Using Metadata

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.