Partilhar via


Validação do Cliente

Os serviços frequentemente publicam metadados para permitir a geração e configuração automáticas de tipos de proxy de cliente. Quando o serviço não é confiável, os aplicativos cliente devem validar se os metadados estão em conformidade com a política do aplicativo cliente em relação à segurança, transações, tipo de contrato de serviço e assim por diante. O exemplo a seguir demonstra como escrever um comportamento do ponto de extremidade do cliente que valida o ponto de extremidade de serviço para assegurar que seja seguro de usar.

O serviço expõe quatro endpoints de serviço. O primeiro ponto de extremidade usa o WSDualHttpBinding, o segundo ponto de extremidade usa autenticação NTLM, o terceiro ponto de extremidade permite o fluxo de transações e o quarto ponto de extremidade usa autenticação baseada em certificado.

O cliente usa a MetadataResolver classe para recuperar os metadados para o serviço. O cliente aplica uma política de proibição de ligações duplex, autenticação NTLM e fluxo de transações através de um comportamento de validação. Para cada ServiceEndpoint instância importada dos metadados do serviço, o aplicativo cliente adiciona uma instância do comportamento InternetClientValidatorBehavior do ponto de extremidade ao ServiceEndpoint antes de tentar usar um cliente WCF (Windows Communication Foundation) para se conectar ao ponto de extremidade. O método do comportamento Validate é executado antes de qualquer operação no serviço ser chamada e impõe a política do cliente ao lançar InvalidOperationExceptions.

Para criar o exemplo

  1. Para criar a solução, siga as instruções em Criando os exemplos do Windows Communication Foundation.

Para executar o exemplo no mesmo computador

  1. Abra um prompt de comando do desenvolvedor para Visual Studio com privilégios de administrador e execute Setup.bat da pasta de instalação de exemplo. Isso instala todos os certificados necessários para executar o exemplo.

  2. Execute o aplicativo de serviço de \service\bin\Debug.

  3. Execute o aplicativo cliente de \client\bin\Debug. A atividade do cliente é exibida no aplicativo de console do cliente.

  4. Se o cliente e o serviço não puderem comunicar-se, consulte Dicas de Resolução de Problemas para Amostras de WCF.

  5. Remova os certificados executando Cleanup.bat quando terminar o exemplo. Outros exemplos de segurança usam os mesmos certificados.

Para executar o exemplo em vários computadores

  1. No servidor, em um prompt de comando do desenvolvedor para Visual Studio executado com privilégios de administrador, digite setup.bat service. A execução de setup.bat com o argumento service cria um certificado de serviço com o nome de domínio totalmente qualificado do computador e exporta o certificado de serviço para um arquivo chamado Service.cer.

  2. No servidor, editeApp.config para refletir o nome do novo certificado. Ou seja, altere o atributo findValue do elemento <serviceCertificate> para o nome de domínio totalmente qualificado do computador.

  3. Copie o arquivo Service.cer do diretório de serviço para o diretório do cliente no computador cliente.

  4. No cliente, abra um prompt de comando do desenvolvedor para Visual Studio com privilégios de administrador e digite setup.bat client. A execução setup.bat com o client argumento cria um certificado de cliente chamado Client.com e exporta o certificado de cliente para um arquivo chamado Client.cer.

  5. No arquivo client.cs altere o valor de endereço do ponto de extremidade MEX e o findValue para definir o certificado de servidor padrão para corresponder ao novo endereço do seu serviço. Para fazer isso, substitua localhost pelo nome de domínio totalmente qualificado do servidor. Reconstruir.

  6. Copie o arquivo Client.cer do diretório do cliente para o diretório de serviço no servidor.

  7. No cliente, execute ImportServiceCert.bat em um prompt de comando do desenvolvedor para Visual Studio aberto com privilégios de administrador. Isso importa o certificado de serviço do arquivo Service.cer para o repositório CurrentUser - TrustedPeople.

  8. No servidor, execute ImportClientCert.bat em um prompt de comando do desenvolvedor para Visual Studio aberto com privilégios de administrador. Importa o certificado do cliente do arquivo Client.cer para a loja LocalMachine - TrustedPeople.

  9. No computador de serviço, crie o projeto de serviço no Visual Studio e execute service.exe.

  10. No computador cliente, execute client.exe.

    1. Se o cliente e o serviço não puderem comunicar-se, consulte Dicas de Resolução de Problemas para Amostras de WCF.

Para limpar após a amostra

  • Execute Cleanup.bat na pasta de exemplos depois de terminar de executar o exemplo.

    Observação

    Esse script não remove certificados de serviço em um cliente ao executar este exemplo em computadores. Se tiver executado exemplos de WCF que usam certificados entre computadores, certifique-se de limpar os certificados de serviço que foram instalados no repositório CurrentUser - TrustedPeople. Para fazer isso, use o seguinte comando: 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.

Ver também