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 de ponto de extremidade de cliente que valida o ponto de extremidade de serviço para garantir que o ponto de extremidade de serviço seja seguro de usar.

O serviço expõe quatro pontos de extremidade 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 impõe uma política de proibição de ligações duplex, autenticação NTLM e fluxo de transações usando um comportamento de validação. Para cada ServiceEndpoint instância importada dos metadados do serviço, o aplicativo cliente adiciona uma instância do InternetClientValidatorBehavior comportamento do ponto de extremidade ao ServiceEndpoint cliente antes de tentar usar um cliente WCF (Windows Communication Foundation) para se conectar ao ponto de extremidade. O método do comportamento é executado antes de Validate qualquer operação no serviço ser chamada e impõe a política do cliente lançando 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 se comunicar, consulte Dicas de solução de problemas para exemplos de WCF.

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

Para executar o exemplo em 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 setup.bat com o service argumento 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, edite App.config para refletir o nome do novo certificado. Ou seja, altere o findValue<atributo no 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. Recriar.

  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. Isso importa o certificado do cliente do arquivo Client.cer para o armazenamento 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 se comunicar, consulte Dicas de solução de problemas para exemplos de WCF.

Para limpar após a amostra

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

    Nota

    Esse script não remove certificados de serviço em um cliente ao executar este exemplo em computadores. Se você tiver executado exemplos de WCF que usam certificados entre computadores, certifique-se de limpar os certificados de serviço que foram instalados no armazenamento 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.

Consulte também