Freigeben über


Autenticação customizada de WCF – Parte III

Olá pessoal,

Esta é a última parte da série de autenticação customizada com WCF e hoje iremos ver como o cliente fornece as informações das credenciais para o serviço.

O primeiro passo é começar com uma aplicação que contém um proxy gerado para o serviço, em seguida configurá-la para utilizar autenticação do tipo UserName e também para validar o serviço através de um certificado, conforme abaixo:

    1:  <configuration>
    2:      <system.serviceModel>
    3:          <bindings>
    4:              <wsHttpBinding>
    5:                  <binding ...>
    6:                      <security mode="Message">
    7:                          <message clientCredentialType="UserName"/>
    8:                      </security>
    9:                  </binding>
   10:              </wsHttpBinding>
   11:          </bindings>
   12:          ...
   13:          <behaviors>
   14:              <endpointBehaviors>
   15:                  <behavior name="ClientCertificateBehaviour">
   16:                      <clientCredentials>
   17:                        <serviceCertificate>
   18:                          <authentication
   19:                              certificateValidationMode="PeerOrChainTrust"/>
   20:                        </serviceCertificate>
   21:                      </clientCredentials>
   22:                  </behavior>
   23:              </endpointBehaviors>
   24:          </behaviors>
   25:      </system.serviceModel>
   26:  </configuration>

Em seguida, é necessário que a aplicação informe ao serviço a credencial utilizada na autenticação:

    1:  CalculatorServiceReference.CalculatorClient proxy = new CalculatorServiceReference.CalculatorClient();
    2:   
    3:  proxy.ClientCredentials.UserName.UserName = "administrator";
    4:  proxy.ClientCredentials.UserName.Password = "P@ssw0rd";
    5:   
    6:  double n = proxy.Add(1, 2);

O download do código fonte gerado na série pode ser realizado aqui

Posts da série:

Comments

  • Anonymous
    November 09, 2009
    Olá Rafael, tudo certo? Excelente série sobre autenticação, parabéns! Tenho recebido algumas consultas sobre o assunto e seus posts estão ajudando com os exemplos, com certeza! Parabéns e que venham novas séries como essas! :) []s Waldemir.

  • Anonymous
    April 15, 2013
    Rafael, Tudo bem? Bom estou tendo um problema em relação ao projeto, fiz o download e quando tento executa-lo me retorna uma mensagem de erro, saberia me dizer o que pode estar de errado? "Não foi possível carregar arquivo ou assembly 'WCFCustomAuthentication' ou uma de suas dependências. O sistema não pode encontrar o arquivo especificado." Grato.

  • Anonymous
    April 15, 2013
    @Michel, Acredito que o problema esteja relacionado com o certificado digital utilizado para comunicação segura da mensagem. As partes I (blogs.msdn.com/.../autentica-o-customizada-de-wcf-parte-i.aspx) e II (blogs.msdn.com/.../autentica-o-customizada-de-wcf-parte-ii.aspx) desse tutorial trazem como fazer a geração e configuração desse certificado. RG

  • Anonymous
    December 11, 2013
    ótima série, esclarece dúvidas que são comuns na hora de implementar a segrança no wcf.

  • Anonymous
    June 15, 2015
    Rafael, sua serie eh fantastica. Mas estou com um problema para subir este tipo de aplicação no Microsft Azure. Eu carrego o projeto WCF no azure (com as validações de usuario e senha customizados, alem do certificado gerado pelo makecert, todos funcionando como localhost). Carrego o certificado no azure com sucesso. Mas ao rodar o WCF pelo browser ocorre erro de não encontrar o certificado. Já tentei colocar no web.config o "serviceCertificate" buscando pelo Thumbprint informado no azure, mas nada faz o serviço encontrar o certificado criado pelo makecert para teste. Sera que o azure não funciona com certificados auto assinados? Ou estou fazendo algo errado? Obrigado pela ajuda.

  • Anonymous
    July 06, 2015
    Oi Leandro, tudo bom? Onde vc esta rodando o seu service no Azure (VMs, Cloud Services, Web Apps)? Acredito que o problema possa estar relacionado com o certificate store que o certificado eh instalado em cada um dos modelos de hospedagem versus a configuracao de qual store ler o certificado no web.config. Abs., RG