Udostępnij za pośrednictwem


Walidacja klienta

Usługi często publikują metadane, aby włączyć automatyczne generowanie i konfigurację typów serwerów proxy klienta. Gdy usługa nie jest zaufana, aplikacje klienckie powinny sprawdzić, czy metadane są zgodne z zasadami aplikacji klienckiej dotyczącymi zabezpieczeń, transakcji, typu kontraktu usługi itd. W poniższym przykładzie pokazano, jak napisać zachowanie punktu końcowego klienta, które weryfikuje punkt końcowy usługi, aby upewnić się, że punkt końcowy usługi jest bezpieczny do użycia.

Usługa uwidacznia cztery punkty końcowe usługi. Pierwszy punkt końcowy korzysta z usługi WSDualHttpBinding, drugi punkt końcowy używa uwierzytelniania NTLM, trzeci punkt końcowy włącza przepływ transakcji, a czwarty punkt końcowy używa uwierzytelniania opartego na certyfikatach.

Klient używa MetadataResolver klasy do pobierania metadanych dla usługi. Klient wymusza zasady zakazujące powiązań dwukierunkowych, uwierzytelniania NTLM i przepływu transakcji przy użyciu zachowania weryfikacji. W przypadku każdego ServiceEndpoint wystąpienia zaimportowanego z metadanych usługi aplikacja kliencka dodaje wystąpienie InternetClientValidatorBehavior zachowania punktu końcowego do ServiceEndpoint klasy przed podjęciem próby użycia klienta programu Windows Communication Foundation (WCF) w celu nawiązania połączenia z punktem końcowym. Metoda zachowania Validate jest uruchamiana przed wywołaniem wszystkich operacji w usłudze i wymusza zasady klienta przez zgłoszenie metody InvalidOperationExceptions.

Aby skompilować przykład

  1. Aby skompilować rozwiązanie, postępuj zgodnie z instrukcjami w temacie Building the Windows Communication Foundation Samples (Tworzenie przykładów programu Windows Communication Foundation).

Aby uruchomić przykład na tym samym komputerze

  1. Otwórz wiersz polecenia dewelopera dla programu Visual Studio z uprawnieniami administratora i uruchom Setup.bat z folderu przykładowej instalacji. Spowoduje to zainstalowanie wszystkich certyfikatów wymaganych do uruchomienia przykładu.

  2. Uruchom aplikację usługi z folderu \service\bin\Debug.

  3. Uruchom aplikację kliencą z folderu \client\bin\Debug. Działanie klienta jest wyświetlane w aplikacji konsolowej klienta.

  4. Jeśli klient i usługa nie mogą się komunikować, zobacz Rozwiązywanie problemów Wskazówki dla przykładów programu WCF.

  5. Usuń certyfikaty, uruchamiając Cleanup.bat po zakończeniu pracy z przykładem. Inne przykłady zabezpieczeń używają tych samych certyfikatów.

Aby uruchomić przykład na komputerach

  1. Na serwerze w wierszu polecenia dla deweloperów programu Visual Studio uruchom polecenie z uprawnieniami administratora, wpisz setup.bat service. Uruchomienie setup.bat z argumentem service powoduje utworzenie certyfikatu usługi z w pełni kwalifikowaną nazwą domeny komputera i eksportuje certyfikat usługi do pliku o nazwie Service.cer.

  2. Na serwerze zmodyfikuj plik App.config, aby odzwierciedlić nową nazwę certyfikatu. Oznacza to, że zmień findValue atrybut w elemencie <serviceCertificate> na w pełni kwalifikowaną nazwę domeny komputera.

  3. Skopiuj plik Service.cer z katalogu usługi do katalogu klienta na komputerze klienckim.

  4. Na kliencie otwórz wiersz polecenia dewelopera dla programu Visual Studio z uprawnieniami administratora i wpisz setup.bat client. Uruchomienie setup.bat z argumentem client powoduje utworzenie certyfikatu klienta o nazwie Client.com i wyeksportowanie certyfikatu klienta do pliku o nazwie Client.cer.

  5. W pliku client.cs zmień wartość adresu punktu końcowego MEX i findValue dla ustawienia domyślnego certyfikatu serwera, aby był zgodny z nowym adresem usługi. W tym celu należy zastąpić hosta lokalnego w pełni kwalifikowaną nazwą domeny serwera. Przebudowa.

  6. Skopiuj plik Client.cer z katalogu klienta do katalogu usługi na serwerze.

  7. Na kliencie uruchom ImportServiceCert.bat w wierszu polecenia dewelopera dla programu Visual Studio otwartym z uprawnieniami administratora. Spowoduje to zaimportowanie certyfikatu usługi z pliku Service.cer do magazynu CurrentUser — Trusted Osoby.

  8. Na serwerze uruchom ImportClientCert.bat w wierszu polecenia dewelopera dla programu Visual Studio otwartym z uprawnieniami administratora. Spowoduje to zaimportowanie certyfikatu klienta z pliku Client.cer do magazynu LocalMachine — Trusted Osoby.

  9. Na komputerze usługi skompiluj projekt usługi w programie Visual Studio i uruchom service.exe.

  10. Na komputerze klienckim uruchom client.exe.

    1. Jeśli klient i usługa nie mogą się komunikować, zobacz Rozwiązywanie problemów Wskazówki dla przykładów programu WCF.

Aby wyczyścić po próbce

  • Uruchom Cleanup.bat w folderze samples po zakończeniu uruchamiania przykładu.

    Uwaga

    Ten skrypt nie usuwa certyfikatów usługi na kliencie podczas uruchamiania tego przykładu na komputerach. Jeśli uruchomiono przykłady programu WCF korzystające z certyfikatów na komputerach, wyczyść certyfikaty usługi zainstalowane w magazynie CurrentUser — Trusted Osoby Store. W tym celu użyj następującego polecenia: 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.

Zobacz też