Мне трудно понять JAAS. Все кажется более сложным, чем должно быть (особенно учебники Sun). Мне нужен простой учебник или пример того, как реализовать безопасность (аутентификация + авторизация) в Java-приложении на основе Struts + Spring + Hibernate с настраиваемым пользовательским репозиторием. Может быть реализовано с использованием ACEGI.
83
Ответы:
Вот некоторые из ссылок, которые я использовал, чтобы понять 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
источник
Другие пользователи предоставили несколько очень полезных ссылок выше, поэтому я не буду беспокоиться о ссылках. Я провел аналогичное исследование в 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, которые решают множество общих проблем безопасности веб-приложений.
источник
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 дает вам действительно простой способ, если вам не нужно что-то конкретное.
источник
Ответ 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» .источник
Я не могу слишком много говорить с самим JAAS, но это руководство по "предлагаемым шагам" по Spring Security и справочное руководство являются довольно хорошими ресурсами по Spring Security - если ваша установка хоть немного проста, вам действительно не нужно сделать гораздо больше, чем просто прочитать их.
источник
Для чисто учебного пособия JAAS ознакомьтесь с этим . Он старый, но должен помочь с основами JAAS.
источник