Веб-сервис JBoss 7.1 JAX-WS за обратным прокси, преобразование https в http

Я развернул веб-службу JAX-WS, размещенную в JBoss 7.1.1. Доступ к веб-сервису осуществляется обратным прокси-сервером. Чтобы получить доступ к сервису из общедоступного Интернета, это должно быть сделано по протоколу https, но связь между обратным прокси-сервером и JBoss осуществляется по протоколу http. Таким образом, хост, присутствующий в файле wsdl, — это http <soap:address location="http://example.com/WS"/>, и он должен быть <soap:address location="https://example.com/WS"/>.

Конфигурация JBoss выглядит следующим образом:

modify-wsdl-addres = true


wsdl-host = jbossws.undefined.host

Вот ссылка на конфигурацию веб-сервисов: https://docs.jboss.org/author/display/AS71/Web+services+configuration

Но я могу найти, где заставить протокол быть https в адресе мыла.


person Nicolás Piquerez    schedule 02.10.2015    source источник


Ответы (2)


У меня только что была такая же проблема, и я отлаживал JBoss 7.1.1. Оказалось, что он определяет URL-адрес во время развертывания и просматривает конфигурацию «Гарантия транспорта», которая может предоставляться в различных местах и ​​форматах.

Я аннотировал свой веб-сервис следующим образом:

@org.jboss.ws.api.annotation.WebContext(transportGuarantee="CONFIDENTIAL")
public class SomeServiceEndpoint implements SomeServiceInterface {
    ...
}

Я использую стандартный http-коннектор и настроил подсистему веб-сервиса следующим образом.

<subsystem xmlns="urn:jboss:domain:webservices:1.2">
    <modify-wsdl-address>true</modify-wsdl-address>
    <wsdl-host>proxy.com</wsdl-host>
    <wsdl-secure-port>443</wsdl-secure-port>
</subsystem>

Изменить:
Я заметил, что http Connector должен иметь атрибуты proxy-name и proxy-port, чтобы принимать простой HTTP-запрос, сделанный прокси-сервером.
Атрибуты secure и Scheme полезны для сервлетов и т. д. , например для создания URL.

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host">
    <connector name="http" protocol="HTTP/1.1"
               socket-binding="http" executor="http"
               scheme="https" secure="true" 
               proxy-name="proxy.com" proxy-port="443"/>
    ...
</subsystem>
person Florian Fray    schedule 17.11.2015
comment
Я не могу проверить это сейчас, но я не уверен, что смогу исправить имя хоста. - person Nicolás Piquerez; 15.04.2016

Конфигурации подсистем web и webservices работают вместе, чтобы предоставить URL-адрес конечной точки (а также URL-адреса для операторов xs:import).

В конфигурации webservices добавьте следующую строку

<wsdl-port>443</wsdl-port>

В конфигурации web измените схему http-коннектора с http на https и добавьте proxy-port="443"

Так это будет выглядеть так:

<subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">
    <connector name="http" protocol="HTTP/1.1" scheme="https" socket-binding="http" 
     secure="true" proxy-port="443"/>
     ...
</subsystem>
<subsystem xmlns="urn:jboss:domain:webservices:1.2">
    <modify-wsdl-address>true</modify-wsdl-address>
    <wsdl-host>jbossws.undefined.host</wsdl-host>
    <wsdl-port>443</wsdl-port>
    ...
</subsystem>
person shonky linux user    schedule 02.11.2015
comment
Логично, но сейчас у меня нет доступа к сервису, чтобы протестировать его. :( - person Nicolás Piquerez; 15.04.2016