Безопасность состоит из следующих аспектов:
- Аутентификация
- Авторизация
- Безопасность транспортного уровня - Шифрование
Аутентификация: - состоит из проверки учетных данных пользователя; в большинстве случаев это осуществляется через механизм входа в систему. Ваша задача создания страницы входа является частью аутентификации.
Авторизация: - ресурсы приложения должны быть защищены от несанкционированного доступа, что означает, что когда пользователь запрашивает защищенный ресурс, приложение должно гарантировать, что пользователь имеет соответствующие права доступа. Обычно это делается путем назначения ролей пользователю и установки фильтров запросов, которые проверяют права доступа пользователя. Эта часть является более важной и требует детального анализа проекта. Одной аутентификации пользователя недостаточно, вам нужно убедиться, что к защищенным ресурсам не обращаются те пользователи, которые не авторизованы для этого.
Безопасность транспортного уровня: - архитектура системы должна гарантировать, что данные, передаваемые по сети, не попадут в руки хакеров или анализаторов. SSL / TSL используется для достижения этого
Контейнеры и инфраструктуры J2EE, такие как Spring security, предоставляют общие функции для каждого аспекта безопасности.
То, что вы пытаетесь разработать, - это простой механизм аутентификации. Безопасность приложений более требовательна, когда речь идет о контроле доступа, то есть авторизации.
Кроме того, безопасность должна масштабироваться, т. Е. По мере того, как бизнес нуждается в изменениях для интеграции систем и безопасности, ваша система должна быть в состоянии адаптироваться к таким вещам, как Single Sign On (SSO), аутентификация LDAP и т. Д.
Хотя JAAS и защита контейнера достаточно хороши для масштабирования, но есть несколько ограничений для них. Например, вам нужно зависеть от конкретных конфигураций и адаптеров поставщика. Ваше приложение заявит о необходимости безопасности в дескрипторах развертывания, а администраторы сервера должны будут настроить области безопасности на стороне сервера.
Я бы порекомендовал вам оценить среду Spring Security (ранее Acegi Security). Мы использовали его во многих наших проектах и обнаружили, что он надежный, настраиваемый и простой в реализации. Он поставляется с набором фильтров, которые перехватывают ваш запрос и обеспечивают контроль доступа. Каркас может использоваться для проверки пользователей по различным репозиториям пользователей, таким как база данных, серверы LADP, безопасность ОС и т. Д. Он является расширяемым и может быть интегрирован с серверами единого входа. Он также предоставляет полезные библиотеки тегов для управления доступом к частям на страницах JSP.
Мало того, что эта структура также обеспечивает безопасность уровня метода, которая может быть наложена на уровне класса через среду Spring AOP