none
https, basicHttpBinding, compact framework RRS feed

  • Pergunta

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


    sábado, 31 de outubro de 2009 16:18

Respostas