none
Segurança entre WCF e Silverlight RRS feed

  • Pergunta

  • Srs,

    Alguém já fez ou tem alguma aplicação exemplo mostrando como trafegar mensagens criptografadas entre serviços WCF e clientes SILVERLIGHT.

    Ex.: Tenho um form de Login e ao tentar logar se eu colocar um sniffer (firebug p. ex.) vejo trafegar meu Login e minha Senha totalmente abertos.

    Já pesquisei pacas....mas nao encontrei de forma clara como fazer esse transporte de mensagens fim a fim de modo seguro, ou seja, garantindo Integridade e Confidencialidade.

    Agradeço desde já
    Fabio
    quinta-feira, 11 de março de 2010 18:55

Respostas

Todas as Respostas

  • Boas Fabio,

    Já pensou em utilizar HTTPS?
    http://www.israelaece.com
    quinta-feira, 11 de março de 2010 19:24
    Moderador
  • fala Israel!

    Cara já até pensei sim e até comecei a fazer uma poc aqui...porém sem sucesso. Certificados, IIS, está meio confuso a coisa toda, vc ou alguém teria algum exemplo ou tuto pra tal façanha?

    Grato
    Fabio
    sexta-feira, 12 de março de 2010 11:40
  • Boas Fabio,

    O que exatamente quer saber?
    http://www.israelaece.com
    sexta-feira, 12 de março de 2010 12:17
    Moderador
  • Eu preciso que a informacao que trafega da minha aplicacao silverlight para minha logica de negocio com WCF esteja Criptografada garantindo a Confidencialidade.

    Eh isso...

    Valeu!
    sexta-feira, 12 de março de 2010 17:01
  • Boas Fabio,

    Legal, então o HTTPS pode te ajudar nisso, já que ninguem irá conseguir penetrar e ver o que tem ali dentro.

    Se estiver utilizando o IIS 7.0, então pode criar um certificado para testes, mas quando por em produção, precisa efetuar a compra de um certificado válido, através de empresas como CertSign, Serasa, etc.
    http://www.israelaece.com
    sexta-feira, 12 de março de 2010 17:55
    Moderador
  • É só colocar isso?

    <serviceBehaviors>
            <behavior name="BehaviorCert">
              <serviceMetadata httpGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="false" />
              <serviceCredentials >
                <serviceCertificate x509FindType ="FindBySubjectName" findValue="fabio-PC" storeLocation="LocalMachine" storeName="My" />
              </serviceCredentials>
            </behavior>
          </serviceBehaviors>
    
    
    <basicHttpBinding>
            <binding name="seguro">
              <security mode="Transport">
                <transport clientCredentialType="Certificate">
                  
                </transport>
              </security>
            </binding>
          </basicHttpBinding>
          
        </bindings>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
          multipleSiteBindingsEnabled="true" />
        <services>
          <service name="NHibernateWCF.Application.Implementation.PessoaService" behaviorConfiguration="BehaviorCert">
            <endpoint address="" binding="basicHttpBinding" bindingConfiguration="seguro"
              contract="NHibernateWCF.Application.IPessoaService" />
            <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
          </service>
    E no cliente precisa de alguma coisa?

    Feito isso...pq q o Firebug continua mostrando a informação Descriptografada? Ele se utiliza do certificado para descriptografar?

    Estamos tendo esta mensagem no browser:
    <fieldset><legend>Resumo de Erros</legend>

    Erro HTTP 403.7 - Forbidden

    A página que você está tentando acessar requer que o navegador tenha um certificado de cliente SSL reconhecido pelo servidor Web.

    </fieldset>


    Grato
    Fabio
    sexta-feira, 12 de março de 2010 18:49
  • Boas Fabio,

    Não, isso que está fazendo é para que o cliente fornece um certificado para autenticá-lo. Isso não protege a comunicação.

    O que você precisa fazer é configurar o IIS para suportar HTTPS, mas para isso precisa de um certificado. Você pode seguir os passos que são mostrados aqui para criar um certificado de testes e utilizar na aplicação: http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx

    Com isso, a sua aplicação/serviço será acessada através de HTTPS, garantindo assim a confidencialidade e integridade das informações.
    http://www.israelaece.com
    sexta-feira, 12 de março de 2010 19:22
    Moderador
  • Israel,

    Retiramos a requisição do certificado para o Cliente, deixamos apenas com o Security mode = Transport, sem certificado.
         <behaviors>
    <serviceBehaviors>
    <behavior name="BehaviorCert">
    <serviceMetadata httpsGetEnabled="true" />
    <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
    </serviceBehaviors>
    </behaviors>
    <bindings>
    <basicHttpBinding> <binding name="seguro"> <security mode="Transport"> </security> </binding> </basicHttpBinding> </bindings> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> <services> <service name="NHibernateWCF.Application.Implementation.PessoaService" behaviorConfiguration="BehaviorCert"> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="seguro" contract="NHibernateWCF.Application.IPessoaService" /> <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" /> </service> </services>

    Fizemos como recomendou e funcionou como mostra a imagem:
    http://img714.imageshack.us/img714/2941/ssl.png

    Entretanto a informação continua sem Confidencialidade, como podemos ver na imagem abaixo pelo Firebug (Sniffer do Firefox).

    http://img535.imageshack.us/img535/5638/firebug.png


    Como proceder para q a informação permaneça sempre confidencial? Tem jeito??? estamos ficando louco ja rsrsrsrs...

    Valeu!
    Fabio
    sexta-feira, 12 de março de 2010 20:06
  • Boas Fabio,

    Acredito que ele deva seguir o mesmo principio do Fiddler: http://www.fiddler2.com/Fiddler/help/httpsdecryption.asp (Question 1).
    http://www.israelaece.com
    sábado, 13 de março de 2010 13:29
    Moderador