2010-11-05 3 views
5

Возможно ли создать WebService с использованием JAX-WS, который затем будет использоваться клиентом WCF с использованием такой привязки?Служба Java 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 на данный момент, только простое обслуживание и хотел просто игнорировать заголовок «Безопасность» в входящем сообщении SOAP. Но он терпит неудачу:

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

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

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

к:

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

все работает безупречно. Любые идеи, что я делаю неправильно?

ответ

0

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

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

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

Cheers.

0

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

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

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

0

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

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

Смежные вопросы