Перенаправление Tomcat ssl работает, но не для веб-приложения с формой входа - PullRequest
0 голосов
/ 21 октября 2019

У меня есть настройка tomcat с перенаправлением порта 80 на порт 443. Сертификаты в порядке.

Если я открываю страницу http://connectors.rtdi.io/, браузер перенаправляется на https://connectors.rtdi.io/.

Если я открываю http://connectors.rtdi.io/democonnector, перенаправление на https также происходит.

Но когда я открываю страницу http://connectors.rtdi.io/democonnector/ui5/Home,, браузер не переключается на https!?!?!

Подробности:

Чтобы включить https, к файлу web.xml сервера добавляется

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Protected Context</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>

    <!-- auth-constraint goes here if you require authentication -->
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

В моем собственном веб-приложении URL http://connectors.rtdi.io/democonnector получает перенаправлениена страницу https, внутри которой есть перенаправление метаобновления на ui5 / Home, где отображается форма входа в систему.

<html><head><meta http-equiv=\"refresh\" content=\"0; URL=ui5/Home\"></head>...

Когда я открываю эту подстраницу напрямую, через http://connectors.rtdi.io/democonnector/ui5/Home, нет перенаправления на httpsпроисходит, и страница входа отображается через http.

Я предполагаю, следовательно, что это web.xml веб-приложения с его ограничением безопасности?

    <security-constraint>
            <web-resource-collection>
                    <url-pattern>/rest/*</url-pattern>
                    <url-pattern>/ui5/*</url-pattern>
            </web-resource-collection>
            <auth-constraint>
                    <role-name>connectorview</role-name>
            </auth-constraint>
    </security-constraint>
    <login-config>
            <auth-method>FORM</auth-method>
            <form-login-config>
                    <form-login-page>/login</form-login-page>
                    <form-error-page>/error</form-error-page>
            </form-login-config>
    </login-config>

Но есть что-то странное.

  1. Поскольку сервер web.xml настраивает CONFIDENTAL для / * всех страниц, democonnector / login, демоСоединитель / index и democonnector / ui5 / Home должны обрабатываться одинаково.

  2. Хорошо, давайте предположим на минуту выше, что сбор веб-ресурсов для / ui5 / * сбрасывает КОНФИДЕНЦИАЛЬНО. Для теста я также добавил ограничение user-data с транспортной гарантией в этот web.xml - без изменений.

  3. Я не хочу настраивать что-либо, связанное с SSL ввеб-приложение.

Я знаю, что вместо этого могу использовать клапан с перенаправлением и, вероятно, должен, но я бы тоже хотел это понять.

Кто-нибудь может заметить мою ошибку?

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