Я с трудом понимаю JAAS. Все это кажется более сложным, чем должно быть (особенно учебники Sun). Мне нужен простой учебник или пример того, как реализовать безопасность (аутентификацию + авторизацию) в java-приложении на основе Struts + Spring + Hibernate с пользовательским репозиторием. Может быть реализовано с помощью ACEGI.
JAAS для человека
Ответы (6)
Вот некоторые из ссылок, которые я использовал, чтобы помочь понять 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/
Также ознакомьтесь с инструкцией по настройке серверов 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 аутентификации и авторизации, который создает уровень абстракции выше, например менеджеры аутентификации и авторизации.
Для начала хорошо распечатать этот в вашу память.
Во-вторых, имхо, самой простой библиотекой для установки и запуска JAAS является Jboss PicketBox. В нем говорится, как выполнять аутентификацию и авторизацию через JBossAuthenticationManager и JBossAuthorizationManager... Легко настраивается с помощью XML или аннотаций. Вы можете использовать его для управления как веб-приложениями, так и автономными приложениями.
Если вам нужна часть авторизации для управления доступом к репозиторию с точки зрения ACL для ресурсов, это то, что вы точно ищете.
Проблема с безопасностью заключается в том, что обычно вам нужно настроить ее в соответствии с вашими потребностями, поэтому вы можете в конечном итоге реализовать:
LoginModule — проверяет имя пользователя и пароль.
CallbackHandler используется следующим образом new LoginContext("Sample", new MyCallbackHandler());
CallbackHandler передается базовым модулям LoginModules, чтобы они могли общаться и взаимодействовать с пользователями, например, запрашивая имя пользователя и пароль через графический интерфейс пользователя. Таким образом, внутри обработчика вы получаете имя пользователя и пароль от пользователя, и они передаются в LoginModule.
LoginContext — тогда вы просто вызываете lc.login(); и подтвердить подлинность учетных данных. LoginContext заполняется аутентифицированным субъектом.
Однако пикетбокс 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 с помощью ЯСПИК.
Я не могу слишком много говорить о самом JAAS, но это "предлагаемые шаги " руководство по Spring Security и справочное руководство оба довольно хороших ресурса по Spring Security - если ваша установка близка к простой, вам действительно не нужно делать намного больше, чем читать их.
Чтобы ознакомиться с учебным пособием исключительно по JAAS, ознакомьтесь с этим. . Он старый, но должен помочь с основами JAAS.