Как реализовать страницу входа HTTPS в веб-приложении? - PullRequest
16 голосов
/ 21 сентября 2009

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

В этих статьях есть несколько хороших замечаний, но я подумывал об использовании HTTPS аналогично странице входа в Yahoo mail. Вы знаете ... вы набираете http://mail.yahoo.com, и вы перенаправляетесь на страницу HTTPS, например **https://**login.yahoo.com/config/login, где вы вводите свое имя пользователя и пароль, и после проверки ваших учетных данных вы перенаправлены обратно на страницу HTTP с сгенерированный session_id файл cookie и все сообщения с этого момента отправляются по HTTP с использованием файла cookie.

Что мне нужно для реализации этого поведения?

Я хочу сделать это для двух веб-приложений Java (одно с Spring Framework, а другое с Struts 1), но не знаю точно, как интегрировать эту HTTPS-часть в приложение (я никогда раньше не работал с HTTPS).

Ответы [ 6 ]

16 голосов
/ 25 сентября 2009

Прежде всего вам нужно включить SSL для вашего сервера. Для Tomcat вам нужно сгенерировать хранилище ключей openSSL и добавить следующий соединитель в server.xml:

<Connector port="8443" scheme="https" secure="true" SSLEnabled="true"
   keystoreFile="mykeystore" sslProtocol="TLS"
   keystorePass="keystore password" />

Для интеграции SSL в ваше приложение я рекомендую Spring Security. Он предлагает именно то, что вы хотите (войти через HTTPS, затем перенаправить на HTTP). Все, что вам нужно сделать, чтобы реализовать его, это установить для forceHTTPS значение true:

<bean id="authenticationProcessingFilterEntryPoint"
class="org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint">
  <property name="loginFormUrl" value="/pages/login.jsp" />
  <property name="forceHttps" value="true"/>
</bean>

Конечно, у Spring и Spring есть довольно крутая кривая обучения, но это того стоит. Сделайте это один раз, и тогда вы сможете применить его к новым приложениям менее чем за час. Spring Security можно использовать как в приложении Spring, так и в приложении Struts.

Безопасность весны раньше была безопасностью Acegi. Это статья , которая поможет вам начать.

3 голосов
/ 21 сентября 2009

@ см. Acegi (весенняя защита)

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

3 голосов
/ 21 сентября 2009

Не уверен насчет какой-либо специфики Java или Spring, но в целом:

1) Установите сертификат SSL на вашем сервере.

2) Переадресация или ссылка на абсолютный URL (с https: // в начале) при переходе на страницу входа

3) Переслать на абсолютный URL-адрес (с http://) после успешной аутентификации.

4) Включите проверку в коде страницы входа, чтобы принимать только соединения https.

Конечно, могут быть специфические для фреймворка способы перенаправления http / https без явного указания полного URL.

1 голос
/ 29 сентября 2009

Загрузите для защищенных страниц скрипт для проверки токена.

вверху вашего скрипта:

 if(!getSecurityToken()) // 1
   redirect(login_page)

 if(!checkToken(token)) // 2
   redirect(login_page)

Страница входа должна установить безопасный токен и создать сеанс, который затем будет передан в запросе. Сервер отслеживает, какой сессии принадлежит какой токен. Для реализации сервера вы должны реализовать для своих скриптов метод checkToken. Токен должен быть сохранен в куки или в другом месте сохранен на странице (для последующих запросов).

Когда на сервер делается запрос, он должен содержать токен, иначе произойдет сбой перенаправления (1).

Когда пользовательский сеанс истекает (по выходу из системы или по тайм-ауту), сопоставление на сервере больше не будет существовать (идентификатор сеанса с идентификатором токена), и поэтому любые новые запросы с токеном будут недействительными и вызовут перенаправление (2).

1 голос
/ 28 сентября 2009

Я бы порекомендовал изучить какое-то решение с единой регистрацией. Быстрый поиск в Google дает, среди прочих, JOSSO , Open SSO и CAS . Я немного раньше работал с CAS и получил некоторый положительный опыт. Spring Security также имеет встроенную поддержку для работы с CAS.

0 голосов
/ 23 августа 2011

В этом посте есть интересное решение:

http://forum.springsource.org/archive/index.php/t-65651.html

Парень использовал фильтр, чтобы держать сеанс активным во время переключения (https - http)

У меня это сработало!

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