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