2008-09-23 3 views
4

Мне была поручена реализация обработчика входа. Единственная деталь, которую захватывает обработчик, - это имя пользователя и пароль. Первоначально я собирался использовать JSP, который был отправлен в сервлет. Где сервлет выполнял поиск db, а также проверял учетные данные пользователя. При успешном входе в систему вы перенаправляетесь, но неудачно возвращает вас обратно в jsp и отображает соответствующие сообщения об ошибках.j_security_check и JAAS

Однако, проведя некоторое исследование, я обнаружил j_security_check и JAAS и не уверен, что использовать или вообще.

Какие преимущества я получу от того, и что будет наиболее подходящим для моей задачи? ?

ответ

1

Простой метод должен быть достаточным, если вы не делаете действительнодействительно чувствительный материал. Просто запомните самый важный (и простой) бит: сохраните хеш-пароль в базе данных, а не настоящий пароль.

2

Используйте то, что предоставляет контейнер, и не выполняйте поиск базы данных, чтобы сделать это. Когда контейнер знает, кто вошел в систему, вы можете использовать роли для ограничения доступа к определенным страницам. Есть также

Использование JAAS даст вам возможность использовать другой способ проверки пароля (например, в активной директории). С этим можно было бы реализовать однократную регистрацию.

1

JAAS снимает с вас нагрузку и позволяет (или клиенту) изменять методы аутентификации, просто отбросив другой модуль. Например, от DB auth до LDAP до Kerberos в NT Domain - вы получаете смысл.

7

безопасности состоит из следующих аспектов:

  1. Authentication
  2. Авторизация
  3. Транспортная безопасность слой - Шифрование

Аутентификация - это заключается в проверке полномочий пользователя; в большинстве случаев это реализуется с помощью механизма входа. Ваша задача создания страницы входа является частью проверки подлинности.

Авторизация: - ресурсы приложений должны быть защищены от несанкционированного доступа, что означает, что когда пользователь запрашивает защищенный ресурс, приложение должно гарантировать, что пользователь имеет соответствующие права доступа. Обычно это делается путем назначения ролей пользователю и установки фильтров запросов, которые проверяют права доступа пользователя. Эта часть более важна и требует детального проектного анализа. Просто проверки подлинности пользователя недостаточно, вам необходимо обеспечить, чтобы защищенные ресурсы не были доступны тем пользователям, которые не авторизованы для них.

Безопасность транспортного уровня: - системная архитектура должна гарантировать, что данные, передаваемые по сети, не попадают в руки хакеров или снифферов. SSL/TSL используется для достижения этого

Контейнеры и фреймы J2EE, такие как Spring security, обеспечивают общие функции для каждого аспекта безопасности.

То, что вы пытаетесь разработать, - это простой механизм аутентификации.Безопасность приложений больше требует, когда дело доходит до контроля доступа, то есть авторизации.

Также необходимо, чтобы безопасность масштабируемой т.е. как бизнес нуждается в изменениях для интеграции систем и безопасности вашей системы должны быть в состоянии адаптироваться к вещам, как Single Sign On (SSO), аутентификации LDAP и т.д.

Хотя JAAS и контейнер безопасности достаточно хорош для масштабирования, но есть несколько ограничений с тем же. Например, вам нужно будет зависеть от конкретных конфигураций и адаптеров конкретного поставщика. Ваше приложение будет объявлять потребности безопасности в дескрипторах развертывания, а администраторы серверов должны настроить области безопасности на сервере.

Я бы порекомендовал вас оценить рамки Spring Security (ранее Acegi Security). Мы использовали то же самое во многих наших проектах и ​​нашли его надежным, настраиваемым и простым в реализации. Он поставляется с набором фильтров, которые перехватывают ваш запрос и обеспечивают контроль доступа. Framework может использоваться для проверки пользователей в отношении различных пользовательских репозиториев, таких как база данных, серверы LADP, безопасность ОС и т. Д. Он расширяем и может быть интегрирован с SSO-серверами. Он также предоставляет полезные taglibraries для контроля доступа к частям на страницах JSP. Мало того, что эта структура также обеспечивает безопасность уровня метода, которая может быть наложена на уровне класса через Spring AOP framework