Служба Java JAX-WS с клиентом WCF - PullRequest
5 голосов
/ 06 ноября 2010

Можно ли создать WebService с использованием JAX-WS, который затем будет использоваться клиентом WCF с такой привязкой?

<bindings>
        <basicHttpBinding>
            <binding name="CaseObjectServicePortBinding" >
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <security mode="TransportWithMessageCredential">
                    <transport clientCredentialType="Certificate"/>
                    <message clientCredentialType="Certificate" />
                </security>
            </binding>

        </basicHttpBinding>
    </bindings>

Я создал пока такой сервис без WSIT, просто сервис и хотел просто игнорировать заголовок «Security» во входящем сообщении SOAP. Но это не с:

«Не удалось установить безопасный канал для SSL / TLS с полномочиями« xxxxxxxxxx ».»

Если я изменю:

<security mode="TransportWithMessageCredential">
                    <transport clientCredentialType="Certificate"/>
                    <message clientCredentialType="Certificate" />
                </security>

до:

<security mode="Transport">
                    <transport clientCredentialType="Certificate"/>
                    <message clientCredentialType="Certificate" />
                </security>

все работает без нареканий. Есть идеи, что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 14 мая 2011

При определении безопасности как TransportWithMessageCredential вы говорите: Мне нужен сервис, который будет взаимодействовать по защищенному транспортному каналу (HTTPS), и я хочу передать учетные данные клиента в заголовке SOAP.

Если вы задаете тип учетных данных сертификата в элементе сообщения, вы говорите: Заголовок SOAP будет передавать учетные данные клиента в виде профиля токена сертификата x.509. Это совместимый формат, который требует WS-Security для службы.

Если вы определяете тип сертификата Certifiate в транспортном элементе, вы говорите: Я хочу взаимную аутентификацию SSL. На самом деле я не уверен, используется ли это, если вы определите TransportWithMessageCredential

0 голосов
/ 31 января 2018

Это произошло на этапе инициации запроса;вам выдаётся исключение TLS, потому что сертификат, установленный на клиенте, не является доверенным.Используйте сертификат с общим именем назначения, если вы пользуетесь услугой общего пользования, используйте доменное имя, в противном случае используйте IP-адрес назначения в качестве общего имени, и оно будет работать просто отлично.

PS: используйте 'basichttps''привязка в случае, если вы хотите продолжить с типом содержимого https' text / xml 'soap 11 по умолчанию от jaxws

0 голосов
/ 14 мая 2011

Ответ - да.Вы можете использовать BasicHttpBinding или WsHttpBinding

Ошибка произошла, потому что при использовании TransportWithMessageCredential клиент WCF наложит дополнительную защиту на ваше сообщение, отправленное по проводам, чтосовместим только с сервисом WCF.

Как только вы изменили его на Транспорт , применяется только безопасность транспорта (SSL с использованием сертификата), поэтому и клиент, и служба могут понимать, как взаимодействовать друг с другом.

Приветствие.

...