Вопрос

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

Это было полезно?

Решение

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

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

http://tomcat.apache.org/tomcat-6.0 -doc / сфера-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 аутентификации и авторизации, который создает уровень абстракции выше, такой как Authentication & amp; Менеджеры авторизации.

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

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

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

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

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

CallbackHandler используется следующим образом: new LoginContext (" Sample " ;, new MyCallbackHandler ());

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

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

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

Ответ СиСи - один из немногих здесь ответов, которые действительно "поняли". ;)

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

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

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

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

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

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

scroll top