Отключить весеннее перенаправление безопасности https - PullRequest
0 голосов
/ 03 мая 2018

Я работаю над веб-приложением и настроил ssl-сертификат для запуска по https в Tomcat.

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true" clientAuth="false" keystoreFile="conf/expchannel.pfx" keystorePass="***" keystoreType="PKCS12">

По некоторым причинам, клиент хочет запустить его на порту 8080. Не должно иметь значения.

Проблема в перехватчике безопасности Spring. Как только он получает запрос, он автоматически перенаправляет на страницу входа, но по неизвестной причине использует порт 8443, который никогда не будет обслуживаться (заканчивается таймаутом)

Конфигурация:

<security:http auto-config="true" use-expressions="true">   
    <security:csrf disabled="true"/>
    <!-- Other pages only autenticated  -->
    <security:intercept-url pattern="/pages/userManagement.xhtml" access="hasRole('ROLE_ADMIN')" />
    <security:intercept-url pattern="/pages/performanceMonitoring.xhtml" access="hasRole('ROLE_ADMIN')" />
    <security:intercept-url pattern="/pages/**" access="hasRole('ROLE_USER')" />

    <security:session-management invalid-session-url="/sessionExpired.xhtml">
    </security:session-management>

    <!-- Set the login page and what to do if login fails -->
    <security:form-login login-page="/login.xhtml" authentication-failure-url="/loginFail.xhtml" 
        default-target-url="/pages/statusOverview.xhtml" />
    <security:csrf/>
</security:http>

В другом экземпляре приложения, работающем на порту 7080, такой проблемы нет, полагаю, существует некое скрытое поведение по умолчанию для точного изменения порта с 8080 -> 8443 в случае запроса https.

Есть ли способ отключить это поведение? Я искал ответ, но не нашел ни одного. Единственное решение, которое я нашел, - это явная настройка портов http и https в весенней конфигурации, что мне не кажется правильным. Я хочу, чтобы он настраивался в конфигурации tomcat, а не индивидуально для каждого веб-приложения.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 06 мая 2018

Вам необходимо установить secure="true" на этом разъеме вместе с scheme="https".

Обратите внимание, что использование порта 8080 для защищенного HTTP похоже на использование порта 80 для открытого текста HTTP: удивительно .

Значение 8443 исходит из настройки Tomcat по умолчанию redirectPort на соединителе: Tomcat (или, возможно, Spring) перенаправляет пользователя к тому, что он считает «безопасным» соединителем, поскольку все входы в систему должны выполняться через TLS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...