j_security_check и JAAS - PullRequest
       10

j_security_check и JAAS

4 голосов
/ 23 сентября 2008

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

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

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

Ответы [ 5 ]

7 голосов
/ 20 февраля 2009

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

  1. Аутентификация
  2. Авторизация
  3. Безопасность транспортного уровня - Шифрование

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

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

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

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

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

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

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

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

2 голосов
/ 23 сентября 2008

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

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

1 голос
/ 20 февраля 2009

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

1 голос
/ 23 сентября 2008

Вы также можете проверить Spring Security framework.

1 голос
/ 23 сентября 2008

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

...