Подтвердить что ты не робот

JAAS для людей

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

4b9b3361

Ответ 1

Вот некоторые из ссылок, которые я использовал, чтобы помочь понять 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/

Также ознакомьтесь с инструкцией по настройке Real-серверов Apache tomcat:

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

Ответ 2

Другие пользователи предоставляют несколько очень полезных ссылок, поэтому я не буду беспокоиться о ссылках. Я провел аналогичные исследования в JAAS для веб-приложений и столкнулся с "блокпостом разума", пока, наконец, не осознаю, что JAAS - это платформа, защищающая безопасность на другом "слое", а затем веб-приложениях в Java World. Он построен для решения проблем безопасности в 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 безопасности или простой старой безопасности Java EE, которые одновременно решают множество проблем безопасности веб-приложений.

Ответ 3

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

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

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

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

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

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

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

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

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

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

Ответ 4

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

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

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

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

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

Ответ 5

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

Ответ 6

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