Dela via


Klientverifiering

Tjänster publicerar ofta metadata för automatisk generering och konfiguration av klientproxytyper. När tjänsten inte är betrodd bör klientprogram verifiera att metadata överensstämmer med klientprogrammets princip för säkerhet, transaktioner, typ av tjänstkontrakt och så vidare. Följande exempel visar hur du skriver ett klientslutpunktsbeteende som validerar tjänstslutpunkten för att säkerställa att tjänstslutpunkten är säker att använda.

Tjänsten exponerar fyra tjänstslutpunkter. Den första slutpunkten använder WSDualHttpBinding, den andra slutpunkten använder NTLM-autentisering, den tredje slutpunkten aktiverar transaktionsflöde och den fjärde slutpunkten använder certifikatbaserad autentisering.

Klienten använder MetadataResolver klassen för att hämta metadata för tjänsten. Klienten tillämpar en princip för att förbjuda duplexbindningar, NTLM-autentisering och transaktionsflöde med ett valideringsbeteende. För varje ServiceEndpoint instans som importeras från tjänstens metadata lägger klientprogrammet till en instans av InternetClientValidatorBehavior slutpunktsbeteendet till ServiceEndpoint innan du försöker använda en WCF-klient (Windows Communication Foundation) för att ansluta till slutpunkten. Beteendets Validate metod körs innan några åtgärder på tjänsten anropas och framtvingar klientens princip genom att InvalidOperationExceptionsutlösa .

Så här skapar du exemplet

  1. Skapa lösningen genom att följa anvisningarna i Skapa Windows Communication Foundation-exempel.

Så här kör du exemplet på samma dator

  1. Öppna en kommandotolk för utvecklare för Visual Studio med administratörsbehörighet och kör Setup.bat från exempelinstallationsmappen. Detta installerar alla certifikat som krävs för att köra exemplet.

  2. Kör tjänstprogrammet från \service\bin\Debug.

  3. Kör klientprogrammet från \client\bin\Debug. Klientaktiviteten visas i klientkonsolprogrammet.

  4. Om klienten och tjänsten inte kan kommunicera kan du läsa Felsökningstips för WCF-exempel.

  5. Ta bort certifikaten genom att köra Cleanup.bat när du är klar med exemplet. Andra säkerhetsexempel använder samma certifikat.

Så här kör du exemplet mellan datorer

  1. På servern skriver du setup.bat servicei en kommandotolk för utvecklare för Visual Studio med administratörsbehörighet. När du service kör setup.bat med argumentet skapas ett tjänstcertifikat med datorns fullständigt kvalificerade domännamn och tjänstcertifikatet exporteras till en fil med namnet Service.cer.

  2. På servern redigerar du App.config för att återspegla det nya certifikatnamnet. Det vill: ändra findValue attributet i elementet <serviceCertificate> till datorns fullständigt kvalificerade domännamn.

  3. Kopiera Service.cer-filen från tjänstkatalogen till klientkatalogen på klientdatorn.

  4. Öppna en kommandotolk för utvecklare för Visual Studio med administratörsbehörighet på klienten och skriv setup.bat client. När du kör setup.bat med client argumentet skapas ett klientcertifikat med namnet Client.com och klientcertifikatet exporteras till en fil med namnet Client.cer.

  5. I den client.cs filen ändrar du adressvärdet för MEX-slutpunkten och findValue för att ange standardservercertifikatet så att det matchar tjänstens nya adress. Det gör du genom att ersätta localhost med serverns fullständigt kvalificerade domännamn. Återskapa.

  6. Kopiera Client.cer-filen från klientkatalogen till tjänstkatalogen på servern.

  7. På klienten kör du ImportServiceCert.bat i en kommandotolk för utvecklare för Visual Studio som öppnas med administratörsbehörighet. Detta importerar tjänstcertifikatet från filen Service.cer till arkivet CurrentUser – Trusted Personer.

  8. På servern kör du ImportClientCert.bat i en kommandotolk för utvecklare för Visual Studio som öppnats med administratörsbehörighet. Detta importerar klientcertifikatet från filen Client.cer till arkivet LocalMachine – Trusted Personer.

  9. På tjänstdatorn skapar du tjänstprojektet i Visual Studio och kör service.exe.

  10. Kör client.exe på klientdatorn.

    1. Om klienten och tjänsten inte kan kommunicera kan du läsa Felsökningstips för WCF-exempel.

Rensa efter exemplet

  • Kör Cleanup.bat i exempelmappen när du har kört exemplet.

    Kommentar

    Det här skriptet tar inte bort tjänstcertifikat på en klient när du kör det här exemplet på flera datorer. Om du har kört WCF-exempel som använder certifikat mellan datorer måste du rensa de tjänstcertifikat som har installerats i arkivet CurrentUser – Trusted Personer. Gör detta genom att använda följande kommando: 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.

Se även