Problemas com WCF e SOAP WS-Security PlainText Nome de usuário (sem SSL)

Precisamos consumir um serviço da Web SOAP 1.1, desenvolvido usando Java, de dentro de um aplicativo C # / .NET 4.0. Não temos acesso à programação de serviços ou ao servidor em que reside. O serviço é exposto por uma conexão não SSL e requer WS-Security, Username / PasswordText.

Usando o SoapUI (http://soapui.org/), podemos consumir o serviço da Web simplesmente criando um projeto, apontando-o para o WSDL e definindo uma configuração simples de Username / PasswordText WS-Securit

O problema é que não podemos consumir o serviço da Web usando o WCF. Após algumas pesquisas, encontramos informações que nos levam a acreditar que o problema pode ser uma incompatibilidade entre o SOAP 1.1, o WS-Security e o wsHttpBinding. O código C # usado é o seguinte:

        //The WSService.ServiceClient class is generated by the Service Reference
        var client = new WSService.ServiceClient(); 

        client.ClientCredentials.UserName.UserName = "Username";
        client.ClientCredentials.UserName.Password = "Password";

        var response = client.MethodToBeConsumed();

A ligação criada é a seguinte:

            <binding name="GeneratedBinding" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="UserName" algorithmSuite="Default" />
                </security>
            </binding>

A ligação criada pela Referência de Serviço é um basicHttpBinding. Entendemos que precisamos usar um wsHttpBinding para WS-Security (SOAP 1.2), mas como o serivice usa o SOAP 1.1, esses dois parecem não ser compatívei

A mensagem de solicitação correta deve ser (conforme gerada pela SOAPUI):

POST http://server:port/Service HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Authorization: Basic ENCRYPTEDPASSWORD
User-Agent: Jakarta Commons-HttpClient/3.1
Host: server:port
Content-Length: 324

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:service.version.details">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:methodName>
         <arg0>1</arg0>
         <arg1>1</arg1>
      </urn:method>
   </soapenv:Body>
</soapenv:Envelope>

Não há realmente nenhuma maneira de conseguir isso usando o WCF? Isso pode ser resolvido usando um customBinding? É a nossa única opção disponível para criar os cabeçalhos / mensagens manualmente e analisar as respostas? Preciso assassinar um desenvolvedor de serviços da Web para usar o WS-Security com SOAP 1.1 em uma conexão não SS

questionAnswers(4)

yourAnswerToTheQuestion