Обеспечение аутентификации пользователей в Java Web App - PullRequest
1 голос
/ 08 декабря 2008

Мое веб-приложение имеет защищенную область, в которую пользователи входят через JSP. JSP отправляет имя пользователя и пароль в сервлет, который затем проверяет правильность учетных данных пользователя. Если они действительны, то пользователь направляется на защищенный ресурс. Как я могу гарантировать, что пользователи не смогут просто перейти к защищенному ресурсу без предварительной проверки?

Ответы [ 4 ]

6 голосов
/ 08 декабря 2008

Общий подход заключается в установке токена в сеансе пользователя, т.е.

session.setAttribute("loggedIn", "true");

или даже

session.setAttribute("loggedInUser", "someUserName");

и проверьте это на любой странице, которая должна быть защищена. Хорошей стратегией является проверка с использованием фильтра сервлетов, который вы прикрепляете к любой защищаемой странице. Если они не проходят проверку, фильтр может перенаправить на страницу входа. Также смотрите здесь: http://java.sun.com/products/servlet/Filters.html

Это хорошая статья об использовании фильтров для аутентификации: http://www.developer.com/java/ent/article.php/3467801

4 голосов
/ 08 декабря 2008

Как насчет использования защитного ограничения в вашем web.xml:

<security-constraint>
      <web-resource-collection>
         <web-resource-name>Secure</web-resource-name>
         <url-pattern>/secure/*</url-pattern>
      </web-resource-collection>
0 голосов
/ 08 декабря 2008

Безопасность действительно трудно понять правильно. Гораздо больше, чем вы обычно думаете. Использование фреймворка (на ум приходит Acegi ) или стандартного раздела "" файла web.xml, как указал LenW , обязательно! По крайней мере, используйте фильтр для обработки авторизации вашей безопасности.

Мне не очень нравится решение использовать единую точку входа (как предложено Рольфом ). Это кажется мне искусственным ограничением вашей архитектуры. И есть много веских причин иметь несколько сервлетов в веб-приложении.

Что бы вы ни делали, не используйте технику, где вы полагаетесь на ручной код на каждой странице (например, каждый JSP начинается с "if user_authentified ..."). Вы забудете положить его куда-нибудь ...

0 голосов
/ 08 декабря 2008

Убедитесь, что люди всегда получают доступ к вашему приложению через один сервлет, где сервлет отправляет запрос в JSP и возвращает полученный ответ браузеру. Таким образом, вы всегда будете контролировать то, что происходит, потому что существует одна точка входа.

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

...