ось 2 через https стартовый вопрос

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

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

также:

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

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

Приветствуется любой отзыв!
Спасибо.


person Cratylus    schedule 16.01.2011    source источник


Ответы (2)


Вот что я использую в своей конфигурации 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, чтобы не добавлять выделенный путь к классам.

person Philippe A.    schedule 07.03.2011

Ссылка: 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>
person deenaik    schedule 14.08.2012