JAAS для людей

83

Мне трудно понять JAAS. Все кажется более сложным, чем должно быть (особенно учебники Sun). Мне нужен простой учебник или пример того, как реализовать безопасность (аутентификация + авторизация) в Java-приложении на основе Struts + Spring + Hibernate с настраиваемым пользовательским репозиторием. Может быть реализовано с использованием ACEGI.

Дэн
источник
Замечательный вопрос. Отличное емкое название для законной ошибки в документации.
Гвидо Ансельми
Лучшие вопросы и ответы на JAAS. Мне было очень трудно начать с этого.
cristiandley
@mattb, хотелось бы сделать дополнение, если можно. Я считаю, что мой ответ может помочь в понимании вашего вопроса. Концептуально говоря.
pss1suporte 05

Ответы:

23

Вот некоторые из ссылок, которые я использовал, чтобы понять JAAS:

http://www.owasp.org/index.php/JAAS_Tomcat_Login_Module

http://www.javaworld.com/jw-09-2002/jw-0913-jaas.html

http://jaasbook.wordpress.com/

http://roneiv.wordpress.com/2008/02/18/jaas-authentication-mechanism-is-it-possible-to-force-j_security_check-to-go-to-a-specific-page/

Также ознакомьтесь с инструкциями по настройке областей Apache Tomcat:

http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html

Martlark
источник
3
Ссылка для jaasbook мертва. Теперь он перемещен на jaasbook.wordpress.com
Эрик Б.
@Martlark, если можно, сделаю дополнение. Я считаю, что мой ответ может помочь понять ваш ответ. Концептуально говоря.
pss1suporte 05
51

Другие пользователи предоставили несколько очень полезных ссылок выше, поэтому я не буду беспокоиться о ссылках. Я провел аналогичное исследование в JAAS для веб-приложений и наткнулся на «препятствие разума», пока наконец не понял, что JAAS - это структура, решающая вопросы безопасности на другом «уровне», нежели веб-приложения в мире Java. Он создан для решения проблем безопасности в Java SE, а не в Java EE.

JAAS - это структура безопасности, созданная для защиты вещей на гораздо более низком уровне, чем веб-приложения. Некоторым примером этих вещей являются код и ресурсы, доступные на уровне JVM, следовательно, все эти возможности устанавливать файлы политик на уровне JVM.

Однако, поскольку Java EE построен на основе Java SE, несколько модулей JAAS были повторно использованы в системе безопасности Java EE, например LoginModules и Callbacks.

Обратите внимание, что в дополнение к безопасности Java EE существует также безопасность Spring (ранее известная как Acegi), которая, как и собственная безопасность Java EE, решает гораздо более высокий «уровень» в проблеме защиты веб-приложений. Это отдельная реализация безопасности, которая не построена поверх стандартной безопасности Java EE, хотя во многих отношениях ведет себя аналогичным образом.

Подводя итог, если вы не стремитесь обеспечить безопасность ресурсов на уровне Java SE (классы, системные ресурсы), я не вижу никакого реального использования JAAS, кроме использования общего класса и интерфейсов. Просто сосредоточьтесь на использовании Spring Security или простой старой безопасности Java EE, которые решают множество общих проблем безопасности веб-приложений.

Isiu
источник
2
Учебное пособие по Java EE 6 предполагает понимание основных концепций безопасности, поэтому небольшой обзор JAAS не помешает.
jacktrades
Лучшее объяснение по JAAS!
Дэвид Хофманн,
@isiu, если можно, сделаю дополнение. Я считаю, что мой ответ может помочь понять ваш ответ. Концептуально говоря.
pss1suporte 05
11

javax.security - это слишком сложный API. В результате есть разработчики не только LoginModules, но и всего API аутентификации и авторизации, который создает уровень абстракции выше, например менеджеры аутентификации и авторизации.

Для начала хорошо бы распечатать это в своей памяти.

Во-вторых, imho, самая простая библиотека для настройки и работы JAAS - это Jboss PicketBox . В нем говорится, как выполнять аутентификацию и авторизацию через JBossAuthenticationManager и JBossAuthorizationManager ... Легко настраивается через XML или аннотации. Вы можете использовать его для управления как веб-приложениями, так и автономными приложениями.

Если вам нужна часть авторизации для управления доступом к репозиторию с точки зрения ACL для ресурсов, это то, что вы точно ищете.

Проблема с безопасностью заключается в том, что обычно вам нужно настроить ее в соответствии с вашими потребностями, поэтому вы можете в конечном итоге реализовать:

LoginModule - проверяет имя пользователя + пароль

CallbackHandler используется такnew LoginContext("Sample", new MyCallbackHandler());

CallbackHandler передается в базовые модули LoginModules, чтобы они могли общаться и взаимодействовать с пользователями - например, запрашивая имя пользователя и пароль через графический интерфейс пользователя. Итак, внутри обработчика вы получаете имя пользователя и пароль от пользователя, которые передаются в LoginModule.

LoginContext - тогда вы просто вызываете lc.login (); и подтвердите учетные данные. LoginContext заполняется аутентифицированным Subject.

Однако пикетбокс Jboss дает вам действительно простой способ, если вам не нужно что-то конкретное.

Лисак
источник
8

Ответ lsiu - это один из немногих ответов, которые действительно "понимают";)

В дополнение к этому ответу, действительно хорошая ссылка на эту тему: Что случилось с JAAS? .

В нем объясняется, как JASPIC является связующим звеном в Java EE между моделями безопасности Servlet и EJB и, возможно, модулем входа в систему JAAS, но во многих случаях роль JAAS сводится к роли относительно простого поставщика имени пользователя и ролей в Java EE.

От того же автора написана более старая статья JAAS in the Enterprise , но в которой содержится много исторической справки о том, почему модели Java SE (JAAS) и Java EE разошлись.

В целом , но несколько типов из JAAS непосредственно используются в Java EE, в основном Principal, Subjectи CallbackHandler. Последние два в основном используются JASPIC. Я объяснил JASPIC в статье « Реализация аутентификации контейнера в Java EE с помощью JASPIC» .

Арьян Тиймс
источник
2

Я не могу слишком много говорить с самим JAAS, но это руководство по "предлагаемым шагам" по Spring Security и справочное руководство являются довольно хорошими ресурсами по Spring Security - если ваша установка хоть немного проста, вам действительно не нужно сделать гораздо больше, чем просто прочитать их.

Мэтт Би
источник
Руководство по "предлагаемым шагам" перемещено сюда: static.springsource.org/spring-security/site/start-here.html
aliopi
1

Для чисто учебного пособия JAAS ознакомьтесь с этим . Он старый, но должен помочь с основами JAAS.

отметка
источник