Delen via


Clientvalidatie

Services publiceren regelmatig metagegevens om automatische generatie en configuratie van clientproxytypen mogelijk te maken. Wanneer de service niet wordt vertrouwd, moeten clienttoepassingen valideren dat de metagegevens voldoen aan het beleid van de clienttoepassing met betrekking tot beveiliging, transacties, het type servicecontract enzovoort. In het volgende voorbeeld ziet u hoe u een gedrag voor een clienteindpunt schrijft waarmee het service-eindpunt wordt gevalideerd om ervoor te zorgen dat het service-eindpunt veilig kan worden gebruikt.

De service maakt vier service-eindpunten beschikbaar. Het eerste eindpunt maakt gebruik van WSDualHttpBinding, het tweede eindpunt maakt gebruik van NTLM-verificatie, het derde eindpunt maakt transactiestroom mogelijk en het vierde eindpunt maakt gebruik van verificatie op basis van certificaten.

De client gebruikt de MetadataResolver klasse om de metagegevens voor de service op te halen. De client dwingt een beleid af om dubbelzijdige bindingen, NTLM-verificatie en transactiestroom te verbieden met behulp van een validatiegedrag. Voor elk ServiceEndpoint exemplaar dat is geïmporteerd uit de metagegevens van de service, voegt de clienttoepassing een exemplaar van het InternetClientValidatorBehavior eindpuntgedrag toe aan de ServiceEndpoint voordat een WCF-client (Windows Communication Foundation) wordt gebruikt om verbinding te maken met het eindpunt. De methode van Validate het gedrag wordt uitgevoerd voordat bewerkingen op de service worden aangeroepen en dwingt het beleid van de client af door het InvalidOperationExceptionsgenereren.

Het voorbeeld bouwen

  1. Volg de instructies in Het bouwen van de Windows Communication Foundation-voorbeelden om de oplossing te bouwen.

Het voorbeeld uitvoeren op dezelfde computer

  1. Open een opdrachtprompt voor Ontwikkelaars voor Visual Studio met beheerdersbevoegdheden en voer Setup.bat uit vanuit de voorbeeldinstallatiemap. Hiermee worden alle certificaten geïnstalleerd die vereist zijn voor het uitvoeren van het voorbeeld.

  2. Voer de servicetoepassing uit vanuit \service\bin\Debug.

  3. Voer de clienttoepassing uit vanuit \client\bin\Debug. Clientactiviteit wordt weergegeven in de clientconsoletoepassing.

  4. Als de client en service niet kunnen communiceren, raadpleegt u Tips voor probleemoplossing voor WCF-voorbeelden.

  5. Verwijder de certificaten door Cleanup.bat uit te voeren wanneer u klaar bent met het voorbeeld. Andere beveiligingsvoorbeelden gebruiken dezelfde certificaten.

Het voorbeeld uitvoeren op computers

  1. Typ op de server in een opdrachtprompt voor ontwikkelaars voor Visual Studio met beheerdersbevoegdheden setup.bat service. Als u het service argument uitvoertsetup.bat, maakt u een servicecertificaat met de volledig gekwalificeerde domeinnaam van de computer en exporteert u het servicecertificaat naar een bestand met de naam Service.cer.

  2. Bewerk App.config op de server om de nieuwe certificaatnaam weer te geven. Dat wil gezegd, wijzig het findValue kenmerk in het <element serviceCertificate> in de volledig gekwalificeerde domeinnaam van de computer.

  3. Kopieer het Service.cer-bestand van de servicemap naar de clientmap op de clientcomputer.

  4. Open op de client een opdrachtprompt voor Ontwikkelaars voor Visual Studio met beheerdersbevoegdheden en typ setup.bat client. Als u het argument uitvoert setup.bat , maakt u een clientcertificaat met de client naam Client.com en exporteert u het clientcertificaat naar een bestand met de naam Client.cer.

  5. Wijzig in het bestand client.cs de adreswaarde van het MEX-eindpunt en het findValue instellen van het standaardservercertificaat dat overeenkomt met het nieuwe adres van uw service. U doet dit door localhost te vervangen door de volledig gekwalificeerde domeinnaam van de server. Herbouwen.

  6. Kopieer het Client.cer-bestand van de clientmap naar de servicemap op de server.

  7. Voer op de client ImportServiceCert.bat uit in een opdrachtprompt voor ontwikkelaars voor Visual Studio die is geopend met beheerdersbevoegdheden. Hiermee importeert u het servicecertificaat uit het Service.cer-bestand in het CurrentUser - Trusted Mensen-archief.

  8. Voer op de server ImportClientCert.bat uit in een opdrachtprompt voor ontwikkelaars voor Visual Studio die is geopend met beheerdersbevoegdheden. Hiermee importeert u het clientcertificaat uit het Client.cer-bestand in het LocalMachine - Trusted Mensen-archief.

  9. Bouw op de servicecomputer het serviceproject in Visual Studio en voer service.exe uit.

  10. Voer client.exe uit op de clientcomputer.

    1. Als de client en service niet kunnen communiceren, raadpleegt u Tips voor probleemoplossing voor WCF-voorbeelden.

Opschonen na het voorbeeld

  • Voer Cleanup.bat uit in de map met voorbeelden zodra u klaar bent met het uitvoeren van het voorbeeld.

    Notitie

    Dit script verwijdert geen servicecertificaten op een client bij het uitvoeren van dit voorbeeld op computers. Als u WCF-voorbeelden hebt uitgevoerd die gebruikmaken van certificaten op computers, moet u de servicecertificaten wissen die zijn geïnstalleerd in het CurrentUser - Trusted Mensen-archief. Gebruik hiervoor de volgende opdracht: 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

Zie ook