2009-03-09 1 views
74

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

+0

Удивительный вопрос. Отличный аргумент в пользу законного отказа документации. –

+0

Лучшие вопросы и ответы на JAAS. У меня было очень тяжелое время, пытаясь начать с него. – cristiandley

+0

@mattb, я хотел бы сделать добавление, если это возможно. Я считаю, что [мой ответ] (http://stackoverflow.com/a/43220700/3542189) может помочь в понимании вашего вопроса. Концептуально говоря. – pss1suporte

ответ

22
+1

спасибо :) Книга jaas действительно хорошая – Makky

+3

Ссылка для jaasbook мертва. Теперь он перемещен в https://jaasbook.wordpress.com/ –

+0

@Martlark, я хотел бы сделать добавление, если это возможно. Я считаю, что [мой ответ] (http://stackoverflow.com/a/43220700/3542189) может помочь в понимании вашего ответа. Концептуально говоря. – pss1suporte

1

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

2

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

+0

Переведено руководство по предлагаемым шагам: http://static.springsource.org/spring-security/site/start-here.html – aliopi

+0

спасибо, обновил ссылку –

49

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

+2

Java EE 6 Tutorial предполагает понимание основных концепций безопасности, поэтому небольшой обзор JAAS не повредит. – jacktrades

+0

Лучшее объяснение на JAAS когда-либо! –

+0

@isiu, я хотел бы сделать добавление, если это возможно. Я считаю, что [мой ответ] (http://stackoverflow.com/a/43220700/3542189) может помочь в понимании вашего ответа. Концептуально говоря. – pss1suporte

11

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

Для начала, хорошо напечатать this в вашу память.

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

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

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

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

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

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

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

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

7

lsiu является одним из немногих ответов здесь, что на самом деле «получить его»;)

Добавление к этому ответу, действительно хорошая ссылка на эту тему Whatever Happened to 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 в статье Implementing container authentication in Java EE with JASPIC.

Смежные вопросы