Аутентификация Tomcat FORM - форма входа не отображается как https - PullRequest
1 голос
/ 26 июня 2010

Это сводит меня с ума.

Я использую Tomcat 6, декларативную аутентификацию на основе форм.Рамки не задействованы.Все работает нормально - некоторые страницы аутентифицированы, некоторые нет, некоторые используют https, некоторые http.Всё как я хочу.КРОМЕ ...

Я хочу, чтобы страница входа всегда использовала https.

Страница входа выглядит как https, если: a) я захожу на нее прямо в браузере.б) Я нажимаю на страницу в приложении, которая настроена для https (и требует аутентификации).

НО страница входа отображается как http, если: a) Я нажимаю на страницу в приложении, которое настроенодля http (и требует аутентификации).

У меня такое ощущение, что я столкнулся с каким-то принятым по умолчанию здесь, и что ответ может быть "почему вы хотите, чтобы логин https получал неhttps page?Это так: а) Я хочу, чтобы пароли были зашифрованы.б) Я хочу, чтобы пользователи вошли в систему, чтобы показать, к какой роли (группе) они принадлежат, чтобы включить / отключить части веб-сайта.c) Я не хочу снижения производительности из-за https, за исключением случаев, когда это абсолютно необходимо.

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

Если у кого-то есть какие-то подсказки / идеи по всей этой области, я был бы очень и очень признателен.

1 Ответ

0 голосов
/ 27 июня 2010

Речь шла о том, что страница входа должна быть https, даже если для страницы, требующей аутентификации, не указано значение КОНФИДЕНЦИАЛЬНО в web.xml.

В итоге я написал небольшой сервлет, который позволяет мне переключаться на https (или http), а не полагаться на настройки конфигурации web.xml CONFIDENTIAL. Настройки КОНФИДЕНЦИАЛЬНО не работают, когда вы заходите на страницу jsp через логин или другой сервлет.

Так что теперь конфигурация для аутентификации FORM в web.xml указывает на сервлет (SSLSwitch), который принимает пару аргументов (url + требуемый протокол http / https) и перенаправляет на фактическую страницу входа с https: /SSLSwitch?the_url=/login/form_login.jsp&the_target=https; /login/error.jsp

Фрагмент активного кода сервлета SSLSwitch: String contextPath = request.getContextPath (); String encodedUrl = response.encodeURL (contextPath + url); String fullUrl = target_domain + encodedUrl; response.sendRedirect (fullUrl);

Сама страница входа в систему jsp следует обычным правилам входа в систему FORM (action = "j_security_check"), и вы попадаете на запрашиваемую страницу после входа в систему в порядке.

Теперь мне нужно посмотреть, что я могу сделать для повышения безопасности сеанса после переключения с https на http. Возможно, фильтр для проверки IP-адреса пользователя не изменяется во время сеанса.

Стивен.

...