Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 verkställer klientens policy genom att kasta InvalidOperationExceptions.
Så här skapar du exemplet
- Skapa lösningen genom att följa anvisningarna i Skapa Windows Communication Foundation-exempel.
Så här kör du exemplet på samma dator
Ö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.
Kör tjänstprogrammet från \service\bin\Debug.
Kör klientprogrammet från \client\bin\Debug. Klientaktiviteten visas i klientkonsolprogrammet.
Om klienten och tjänsten inte kan kommunicera kan du läsa Felsökningstips för WCF-exempel.
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
På servern skriver du
setup.bat servicei en kommandotolk för utvecklare för Visual Studio med administratörsbehörighet. Om du körsetup.batmed argumentetserviceskapas ett tjänstcertifikat med datorns fullständigt kvalificerade domännamn och tjänstcertifikatet exporteras till en fil med namnet Service.cer.På servern redigerar du App.config för att återspegla det nya certifikatnamnet. Det vill säga, ändra
findValue-attributet i elementet <serviceCertificate> till datorns fullständigt kvalificerade domännamn.Kopiera Service.cer-filen från tjänstkatalogen till klientkatalogen på klientdatorn.
Ö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örsetup.batmedclientargumentet skapas ett klientcertifikat med namnet Client.com och klientcertifikatet exporteras till en fil med namnet Client.cer.I den client.cs filen ändrar du adressvärdet för MEX-slutpunkten och
findValuefö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. Bygg om.Kopiera Client.cer-filen från klientkatalogen till tjänstkatalogen på servern.
På klienten kör du ImportServiceCert.bat i en kommandotolk för utvecklare för Visual Studio som öppnats med administratörsbehörighet. Detta importerar tjänstcertifikatet från filen Service.cer till lagringsplatsen CurrentUser – TrustedPeople.
På servern kör du ImportClientCert.bat i en kommandotolk för utvecklare för Visual Studio som öppnas med administratörsbehörighet. Detta importerar klientcertifikatet från filen Client.cer till butiken LocalMachine – TrustedPeople.
På tjänstdatorn skapar du tjänstprojektet i Visual Studio och kör service.exe.
Kör client.exepå klientdatorn.
- Om klienten och tjänsten inte kan kommunicera kan du läsa Felsökningstips för WCF-exempel.
Att städa upp efter provet
Kör Cleanup.bat i exempelmappen när du har kört exemplet.
Anmärkning
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-exempelprogram som använder certifikat mellan datorer, se till att rensa de tjänstcertifikat som har installerats i lagringsplatsen CurrentUser – TrustedPeople. 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.