axis2 over https стартовый вопрос - PullRequest
1 голос
/ 17 января 2011

Я пытаюсь выяснить, как использовать axis2 через https.
Направляющая axis2 гласит:

CommonsHTTPTransportSender также может быть используется для связи по https.

также:

Обратите внимание, что по умолчанию HTTPS работает только когда сервер не ожидать аутентификации клиентов (Только односторонний SSL) и где сервер имеет открытые ключи клиентов в своем трастовый магазин. Если вы хотите выполнить Аутентификация клиента SSL (двухсторонний SSL), Вы можете использовать Особенность Protocol.registerProtocol HttpClient.

Так что мой вопрос: есть ли 2 подхода для HTTPS для оси?
1) Для использования CommonsHTTPTransportSender
2) Раскомментируйте коннектор https в конфигурации apache ??
Или только (1) это стандартный подход ??
Также в чем проблема с аутентификацией клиента? Я знаю, что для подключения Apache мне просто нужно установить clientAuth. Это не работает для оси?

Любые входные данные приветствуются!
Спасибо

Ответы [ 2 ]

0 голосов
/ 14 августа 2012

Ссылка: http://axis.apache.org/axis2/java/core/docs/servlet-transport.html

Для каждого протокола (HTTP и / или HTTPS) экземпляр AxisServletListener должен быть объявлен в axis2.xml. Если используется только один протокол, дальнейшая настройка не требуется. Например, если используется только HTTP, в axis2.xml должно присутствовать следующее объявление:

<transportReceiver name="http" class="org.apache.axis2.transport.http.AxisServletListener"/>

Если используются как HTTP, так и HTTPS, то все становится немного сложнее. Причина в том, что для предоставления WSDL с правильными URI конечной точки AxisServlet должен знать порты, используемые HTTP и HTTPS. К сожалению, API сервлета не позволяет веб-приложению обнаруживать все настроенные протоколы. Он предоставляет только информацию о протоколе, имени хоста и порте для текущего запроса. Если настроен только один AxisServletListener, то этой информации достаточно, чтобы AxisServlet автоматически определил номер порта. Если используются как HTTP, так и HTTPS (или если WSDL извлекаются через транспорты, отличные от AxisServlet), то AxisServlet не может узнать номера портов, пока не обработает хотя бы один запрос для каждого протокола. Чтобы сделать генерацию WSDL предсказуемой в этом сценарии, необходимо явно настроить номера портов в axis2.xml, например, в следующем примере:

<transportReceiver name="http" class="org.apache.axis2.transport.http.AxisServletListener">
    <parameter name="port">8080</parameter>
</transportReceiver>

<transportReceiver name="https" class="org.apache.axis2.transport.http.AxisServletListener">
    <parameter name="port">8443</parameter>
</transportReceiver>
0 голосов
/ 07 марта 2011

Вот что я использую в своей конфигурации axis.xml для подхода с использованием коннектора https (Axis 1.4.1).

<transportReceiver name="https" class="org.apache.axis2.transport.nhttp.HttpCoreNIOSSLListener">
    <parameter name="port" locked="false">9002</parameter>
    <parameter name="non-blocking" locked="false">true</parameter>
  <parameter name="keystore" locked="false">
      <KeyStore>
          <Location>.keystore</Location>
          <Type>JKS</Type>
          <Password>changeme</Password>
          <KeyPassword>changeme2</KeyPassword>
      </KeyStore>
  </parameter>
</transportReceiver>

Я сбросил свое хранилище ключей в axis2-1.4.1 / lib, чтобы избежать добавления выделенного пути к классам.

...