Olá.
Ando a desenvolver um serviço em WCF onde uso um EndPoint do tipo basicHttpBinding com segurança como mostra a seguinte configuração.
<endpoint address="basicHttp"
binding="basicHttpBinding" bindingConfiguration="basicHttpBindingConfig"
name="basicHttp" contract="JR.ITAM.Service.IITAMService" />
<basicHttpBinding>
<binding name="basicHttpBindingConfig">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" />
</security>
</binding>
</basicHttpBinding
O serviço está disponivel através de https e a funcionar correctamente.
Na minha applicação windows client (framework 3.5) tenho o seguinte código, que também funciona correctamente.
BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
basicHttpBinding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
basicHttpBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
EndpointIdentity eIdentity = EndpointIdentity.CreateDnsIdentity("xxxx");
EndpointAddress eAddress = new
EndpointAddress(new Uri("https://xxxx/ITAMService.svc/basicHttp"), eIdentity);
ITAMServiceClient svc = new ITAMServiceClient(basicHttpBinding, eAddress);
svc.ClientCredentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
svc.ClientCredentials.UserName.UserName = "1";
svc.ClientCredentials.UserName.Password = "1";
O meu problema está em aceder ao serviço através de uma aplicação windows mobile, Compact Framework 3.5.
O problem começa com o NetCFSvcUtil.exe, onde não consigo gerar o proxy para o url : https://xxxx/ITAMService.svc/basicHttp
Erro:
Could not establish trust relationship for the SSL/TLS secure channel with authority
A minha primeira questão é:
1 - Existe forma dar a volta a este problema?
Conseguindo gerar o proxy desactivando o Https surge um outro problema.
Na aplicação mobile quando tento criar mesmo código (utilizado na app windows) para aceder ao serviço, vejo que a class BasicHttpBinding não disponibliza as mesmas propriedades.
Ou seja não disponibliza o seguinte:
basicHttpBinding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
basicHttpBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
e a variavel serviço também não disponibliza as propriedades para indicar o username/password
svc.ClientCredentials.UserName.UserName = "1";
svc.ClientCredentials.UserName.Password = "1";
Como segunda questão tenho:
2 - Como fazer na applicação mobile para aceder ao serviço e indicar o Security.Mode, ClientCredentialType e ClientCredentials?
Desde já obrigado pela atenção.
Atenciosamente,
Rui Figueiredo.