Udostępnij przez


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 politykę zakazu łączenia dwukierunkowego, uwierzytelniania NTLM oraz przepływu transakcji za pomocą mechanizmu weryfikacji. W przypadku każdego ServiceEndpoint wystąpienia zaimportowanego z metadanych usługi aplikacja kliencka dodaje wystąpienie zachowania punktu końcowego InternetClientValidatorBehavior do ServiceEndpoint, zanim podejmie próbę 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. To instaluje wszystkie certyfikaty wymagane do uruchomienia próbki.

  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ć, sprawdź sekcję „Wskazówki dotyczące rozwiązywania problemów z przykładami programu WCF”.

  5. Usuń certyfikaty, uruchamiając Cleanup.bat, gdy zakończysz pracę z próbką. Inne przykłady zabezpieczeń używają tych samych certyfikatów.

Aby uruchomić próbkę na komputerach

  1. Na serwerze, w oknie 'Wiersz polecenia dla deweloperów programu Visual Studio' uruchomionym z uprawnieniami administratora, wpisz setup.bat service. Uruchomienie setup.bat z argumentem service tworzy certyfikat usługi z w pełni kwalifikowaną nazwą domeny komputera i eksportuje certyfikat usługi do pliku o nazwie Service.cer.

  2. Na serwerze edytuj 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. Aby to zrobić, zastąp "localhost" 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 - TrustedPeople.

  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 — TrustedPeople.

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

  10. Na komputerze klienckim uruchom polecenie client.exe.

    1. Jeśli klient i usługa nie mogą się komunikować, sprawdź sekcję „Wskazówki dotyczące rozwiązywania problemów z przykładami programu WCF”.

Aby posprzątać po próbie

  • Uruchom Cleanup.bat w folderze próbek po zakończeniu uruchamiania próbki.

    Uwaga / Notatka

    Ten skrypt nie usuwa certyfikatów usługi na kliencie podczas uruchamiania tego przykładu na komputerach. Jeśli uruchamiałeś przykłady WCF korzystające z certyfikatów na różnych komputerach, pamiętaj o wyczyszczeniu certyfikatów usługi, które zostały zainstalowane w magazynie CurrentUser - TrustedPeople. 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 także