Sdílet prostřednictvím


Ověření klienta

Služby často publikují metadata, která umožňují automatické generování a konfiguraci typů proxy klientů. Pokud služba není důvěryhodná, klientské aplikace by měly ověřit, že metadata odpovídají zásadám klientské aplikace týkajícím se zabezpečení, transakcí, typu kontraktu služby atd. Následující ukázka ukazuje, jak napsat chování koncového bodu klienta, které ověří koncový bod služby, aby se zajistilo, že je koncový bod služby bezpečný.

Služba zveřejňuje čtyři koncové body služby. První koncový bod používá WSDualHttpBinding, druhý koncový bod používá ověřování NTLM, třetí koncový bod umožňuje tok transakcí a čtvrtý koncový bod používá ověřování na základě certifikátů.

Klient používá MetadataResolver třídu k načtení metadat pro službu. Klient vynucuje zásadu zakazující duplexní vazby, ověřování pomocí NTLM a tok transakcí pomocí validačního chování. Pro každou instanci ServiceEndpoint importovanou z metadat služby klientská aplikace předtím, než se pokusí použít klienta WCF (Windows Communication Foundation) pro připojení ke koncovému bodu, přidá do InternetClientValidatorBehavior instanci ServiceEndpoint chování koncového bodu. Metoda chování Validate se spustí před voláním jakýchkoli operací ve službě a vynucuje zásady klienta vyvoláním InvalidOperationExceptions.

Sestavit ukázku

  1. Pro sestavení řešení postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.

Spustit ukázku na stejném počítači

  1. Otevřete příkazový řádek pro vývojáře pro Visual Studio s oprávněními správce a spusťte Setup.bat z ukázkové instalační složky. Tím se nainstalují všechny certifikáty potřebné pro spuštění ukázky.

  2. Spusťte aplikaci služby z \service\bin\Debug.

  3. Spusťte klientskou aplikaci z \client\bin\Debug. Aktivita klienta se zobrazí v aplikaci konzoly klienta.

  4. Pokud klient a služba nemůžou komunikovat, přečtěte si Tipy pro řešení potíží v ukázkách WCF.

  5. Po dokončení ukázky odeberte certifikáty spuštěním Cleanup.bat. Jiné ukázky zabezpečení používají stejné certifikáty.

Spustit ukázku na více počítačích

  1. Na serveru spusťte příkazový řádek pro vývojáře pro Visual Studio s oprávněními správce a napište setup.bat service. Spuštění setup.bat s argumentem service vytvoří certifikát služby s plně kvalifikovaným názvem domény počítače a exportuje certifikát služby do souboru s názvem Service.cer.

  2. Na serveru upravte App.config tak, aby odrážel nový název certifikátu. To znamená, že změňte atribut findValue v elementu <serviceCertificate> na plně kvalifikovaný název domény počítače.

  3. Zkopírujte soubor Service.cer z adresáře služby do klientského adresáře v klientském počítači.

  4. V klientovi otevřete příkazový řádek pro vývojáře pro Visual Studio s oprávněními správce a zadejte setup.bat client. Spuštění setup.bat s argumentem client vytvoří klientský certifikát s názvem Client.com a exportuje klientský certifikát do souboru s názvem Client.cer.

  5. V souboru client.cs změňte hodnotu adresy koncového bodu MEX a findValue nastavení výchozího certifikátu serveru tak, aby odpovídalo nové adrese vaší služby. Provedete to tak, že nahradíte localhost plně kvalifikovaným názvem domény serveru. Přestavba.

  6. Zkopírujte soubor Client.cer z klientského adresáře do adresáře služby na serveru.

  7. Na klientovi spusťte ImportServiceCert.bat v příkazovém řádku pro vývojáře pro Visual Studio otevřené s oprávněními správce. Tím se certifikát služby naimportuje ze souboru Service.cer do úložiště CurrentUser – TrustedPeople.

  8. Na serveru spusťte ImportClientCert.bat v příkazovém řádku pro vývojáře pro Visual Studio otevřené s oprávněními správce. Tím se klientský certifikát naimportuje ze souboru Client.cer do úložiště LocalMachine – TrustedPeople.

  9. V počítači služby sestavte projekt služby v sadě Visual Studio a spusťte service.exe.

  10. Na klientském počítači spusťte client.exe.

    1. Pokud klient a služba nemůžou komunikovat, přečtěte si Tipy pro řešení potíží v ukázkách WCF.

Úklid po vzorku

  • Po dokončení spuštění ukázky spusťte Cleanup.bat ve složce s ukázkami.

    Poznámka:

    Tento skript při spuštění této ukázky na různých počítačích neodebere služební certifikáty na klientovi. Pokud jste spustili ukázky WCF, které používají certifikáty napříč počítači, nezapomeňte vymazat certifikáty služeb nainstalované v úložišti CurrentUser – TrustedPeople. K tomu použijte následující příkaz: 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.

Viz také