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 (6)
  1. 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.

  2. Michel Geronazzo says:

    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.

  3. @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

  4. Isaias S. Silva says:

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

  5. Leandro Pedro says:

    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.

  6. 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

Comments are closed.

Skip to main content