none
WCF - Assinatura Digital - WS-Security RRS feed

  • Pergunta

  • Prezados,
    Preciso fazer um cliente que consome um webservice no padrão Ws-Securite.
    Não sei em que plataforme este WebService  foi desenvolvido.

    Primeira pergunta:
    Que tipo de Bind tenho que usar:basicHttpBindingou wsHttpBinding?

    Segunda pergunta:
    Li vários artigos sobre a criação do certificado e como o WCF realiza a assinatura e ainda tenho as seguintes duvidas...

        Passo 1 - Para criar um certificado em "real" eu preciso gerar minha chave privada (OpenSSL) e meu arquivo csr (contem as informações de quem sou) este   arquivo é gerado a partir da chave privada e enviado para uma certificadora gerar meu certificado.

        Passo 2 - Pelo conceito o Certificado Digital contém a minha chave pública e "assinatura" de uma certificadora...ok.. Quando a aplicação vai assinar uma mensagem ela precisa da chave privada. Gerando por MakeCert pelo que entendi é gerado um certifado de testes onde a chave privada é armazenada no Key Store do Windows e quando o WCF vai assinar a mensagem ela obtem a chave pública e privada no mesmo repositorio.

    A DUVIDA é: Em Produção como é gerado? usa-se MakeCert?? estou perdido.. me AJUDEM!!!!!!!!!!!!

    quarta-feira, 29 de abril de 2009 13:45

Respostas

Todas as Respostas

  • Boas Ricore,

    1 - WsHttpBinding. O BasicHttpBinding é um binding sem as implementações do WS-*, apenas para compatibilidade com os antigos ASMX.
    2 - Você até pode utilizar um certificado gerado pelo makecert.exe para testes (http://www.israelaece.com/post/Criando-certificados-para-teste.aspx). Em produção, você deverá recorrer a compra de um certificado por um agência autorizada, como a Serasa, Verisign, Certsign, etc.
    http://www.israelaece.com
    quinta-feira, 30 de abril de 2009 12:26
    Moderador
  • Obrigado pela resposta!
    Acabei tirando minhas duvidas..
    Na verdade é preciso gerar a chave pvk e o csr e enviar para a certificadora assinar.Ganhando o certificado é preciso gerar um arquivo pfx que contem a chave publica e a referencia da privada...este certificado deve ser instaldo.O Wcf precisa do certificado com a referencia da private key para poder assinar a mensagem.Testei pouco...mas gostaria de 2 respostas.
    1 - Preciso além de assinar a mensagem passar um UserNameToken,como adiciono mais de um behavior em um endpoint?

    2 - Em alguns exemplos vi o uso do <Identity><dns value="nome_certicado">... o que siginifica? no meu caso não funcionou quando usado!

    Obrigado Israel!

    sexta-feira, 1 de maio de 2009 01:08
  • Boas,

    1 - Você quer saber como informar um usuário e senha no cliente? Se sim, aqui tem um exemplo: http://www.israelaece.com/post/WCF-Integrando-MembershipProvider-e-RoleProvider.aspx

    2 - A finalidade do elemento <identity /> é permitir ao cliente verificar se a identidade do serviço (certificado) é válida ou não, verificando se o DNS especificado no subelemento <dns /> coincide ou não com subject name durante o handshake, para que o cliente não envie informações para o serviço sem ter certeza de que seja o verdadeiro serviço.
    http://www.israelaece.com
    sábado, 2 de maio de 2009 01:08
    Moderador
  • Boa tarde Israel!!

    me livro de um problema e caio em outro...rs..

    Percebi que o SOAP não esta no formato que a documentação que meu projeto exige...

    EX:Não esta sendo gerado as tags de token
    <wsse:UsernameToken >
    <
    wsse:Username>systemUser</wsse:Username>
    <
    wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401- wss-username-token-profile-1.0#PasswordText"> senhaChun </wsse:Password> </wsse:UsernameToken>

    EX:Não esta sendo gerada a tag de segurança
    <wsse:BinarySecurityToken EncodingType="http://docs.oasis−open.org/wss/2004/01/oasis−200401−wss−soap−message−security−1.0#Base64Binary" ValueType="http://docs.oasis−open.org/wss/2004/01/oasis−200401−wss−x509−token−profile−1.0#X509" wsu:Id="x509bst_1080660497650146620" xmlns:wsu="http://docs.oasis−open.org/wss/2004/01/oasis−200401−wss−wssecurity−utility−1.0.xsd"> GQZ+ffclLCxWj+... </wsse:BinarySecurityToken>

    EX:A parte de assinatura esta OK
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:SignedInfo> <ds:CanonicalizationMethod



    Israel parace que existe uma incompatibilidade de versão de SOAP... como resolvo?
    Abssssssss
    terça-feira, 5 de maio de 2009 18:54
  • Boas Ricore,

    O teu binding possui duas propriedades chamadas MessageVersion e EnvelopeVersion. Tente analisar qual delas se encaixa com a sua exigência.
    http://www.israelaece.com
    quarta-feira, 6 de maio de 2009 12:29
    Moderador