Клиент веб-службы Java для веб-службы .NET с WS2007FederationHttpBinding - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь подключиться к веб-службе ( WSDL ) из Java , но я получаю сообщение об ошибке, что соединение было сброшено (веб-службанаходится в .NET , который мы не можем контролировать).

Хост веб-службы сообщил нам, что нам не удалось пройти аутентификацию по этой ошибке.

Iпрошел через Axis, Axis2, JAX-WS и даже попытался отправить простое сообщение Java с конвертом SOAP (с SAAJ ) и отправил эти сообщения с помощью Basic Authentication, который, очевидно, не работал.

Я пытался протестировать это через .NET-клиент ( C # ), и это работает нормально, так что это не таккак проблема сети. В проекте .NET я вижу, что был создан файл с именем configuration.scvinfo . Это выглядит так:

<configurationSnapshot>
    <behaviors />
    <bindings>
        <binding digest="...>
                <Data name="WS2007FederationHttpBinding_myService">
                    <security mode="TransportWithMessageCredential">
                        <message>
                            <issuer address="issuerAddress" binding="ws2007HttpBinding" bindingConfiguration="bindingAddress" />
                            <issuerMetadata address="issuerMetadata" />
                            <tokenRequestParameters>
                                <trust:SecondaryParameters>
                                    <trust:CanonicalizationAlgorithm>...</trust:CanonicalizationAlgorithm>
                                    <trust:EncryptWith>...</trust:EncryptWith>
                                    <trust:EncryptionAlgorithm>...</trust:EncryptionAlgorithm>
                                    <trust:KeySize>...</trust:KeySize>
                                    <trust:KeyType>...</trust:KeyType>
                                    <trust:KeyWrapAlgorithm>...</trust:KeyWrapAlgorithm>
                                    <trust:SignWith>...</trust:SignWith>
                                </trust:SecondaryParameters>
                            </tokenRequestParameters>
                        </message>
                    </security>
                </Data>
        <binding digest="...>
                <Data name="https address">
                    <security mode="TransportWithMessageCredential">
                        <message clientCredentialType="UserName" establishSecurityContext="false" />
                        <transport clientCredentialType="None" />
                    </security>
                </Data>
    </bindings>
    <endpoints>
        <endpoint>...</endpoint>
    </endpoints>
</configurationSnapshot>

Здесь я вижу привязку как WS2007FederationHttpBinding , а режим безопасности - TransportWithMessageCredential и clientCredentialType как UserName

Теперь я не очень разбираюсь в .NET или о том, как создаются службы, или что означает этот файл, но я думаю, что здесь могут быть некоторые атрибуты, которые я могупреобразовать в Java и использовать его для аутентификации на этом сервере.

Или любая из упомянутых мной библиотек может как-то справиться с этим, или есть другой способ передачи учетных данных ??

...