Algumas funcionalidades de segurança do WCF exigem que se utilize certificados para proteger a mensagem. Eu tenho escrito sobre algumas dessas funcionalidades aqui e, no download do código fonte, o certificado não está junto com o projeto. Com isso, ao rodar a aplicação, voce receberá uma exceção dizendo que não foi possível localizar este certificado. Isso aconteceu recentemente com o artigo sobre customização de autenticação e autorização e que o leitor Marco Tulio apontou aqui.
Neste artigo específico, para que voce consiga rodá-lo, o primeiro passo é criar um certificado de testes a partir do utilitário makecert.exe que, por sua vez, vem juntamente com o SDK do .NET Framework. Para utilizá-lo, basta definir algumas configurações necessárias para a geração do certificado, algo como é mostrado abaixo:
C:>makecert -sr LocalMachine -ss TrustedPeople -sky exchange -pe -a sha1 -n “CN=localhost” C:localhost.cer
Observação: Para entender cada uma dessas opções que o utilitário fornece, consulte este artigo.
Depois do certificado criado, então nos resta configurá-lo para que o serviço possa fazer uso dele. Ao abrir o arquivo de configuração do host, efetue a mudança do certificado, apontando para este que foi recém criado. O código ficará semelhante ao qual é mostrado abaixo:
<serviceCredentials>
<serviceCertificate
findValue=”localhost”
storeLocation=”LocalMachine”
storeName=”TrustedPeople”
x509FindType=”FindBySubjectName” />
<!– Outras Configurações –>
</serviceCredentials>
Depois disso, execute o host separadamente e atualize a referencia no projeto cliente para que a chave pública seja alterada.
Para finalizar, ainda falando do artigo que explora a customização da autenticação e autorização no WCF, é necessário alterar o path dos arquivos XML que estão dentro da classe/arquivo XmlSecurityHelper.