JAAS для людей


83

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


Чудове запитання. Чудовий мізерний титул за законний провал документації
Guido Anselmi

Найкращі запитання щодо JAAS. Я дуже важко намагався почати з цього.
cristiandley

@mattb, я хотів би внести додаток, якщо це можливо. Я вважаю, що моя відповідь може допомогти зрозуміти ваше запитання. Концептуально кажучи.
pss1suporte

Відповіді:


23

3
Посилання на jaasbook мертве. Зараз його перенесено на jaasbook.wordpress.com
Ерік Б.

@Martlark, я хотів би внести додаток, якщо це можливо. Я вважаю, що моя відповідь може допомогти зрозуміти вашу відповідь. Концептуально кажучи.
pss1suporte

51

Інші користувачі надали декілька дуже корисних посилань вище, тому я не збираюся заморочуватися посиланнями. Я провів аналогічне дослідження в JAAS для веб-додатків і зіткнувся з "загальнодоступним блокуванням", поки нарешті не зрозумів, що JAAS є структурою, що займається безпекою на іншому "рівні", ніж веб-додатки у Світі Java. Він побудований для вирішення проблем безпеки в Java SE, а не в Java EE.

JAAS - це система безпеки, побудована для захисту речей на набагато нижчому рівні, ніж веб-додаток. Деяким прикладом цих речей є код та ресурси, доступні на рівні JVM, отже, і всі ці можливості встановлення файлів політики на рівні JVM.

Однак, оскільки Java EE побудована поверх Java SE, кілька модулів з JAAS були повторно використані в безпеці Java EE, такі як LoginModules та Callbacks.

Зауважте, що на додаток до безпеки Java EE існує ще й Spring security (раніше відома як Acegi), яка подібно до власної безпеки Java EE вирішує набагато вищий "рівень" у забезпеченні проблеми веб-додатків. Це окрема реалізація безпеки, яка не побудована поверх стандартної безпеки Java EE, хоча вона поводиться подібним чином у багатьох відношеннях.

Підводячи підсумок, якщо ви не хочете захистити ресурси на рівні Java SE (класи, системні ресурси), я не бачу жодного реального використання JAAS, крім використання загального класу та інтерфейсів. Просто зосередьтеся на використанні Spring Security або звичайної старої безпеки Java EE, яка вирішує багато загальних проблем безпеки веб-додатків.


2
Підручник з Java EE 6 передбачає розуміння основних концепцій безпеки, тому невеликий огляд JAAS не завадить.
jacktrades

Найкраще пояснення щодо JAAS!
Девід Хофманн,

@isiu, я хотів би внести додаток, якщо це можливо. Я вважаю, що моя відповідь може допомогти зрозуміти вашу відповідь. Концептуально кажучи.
pss1suporte

11

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 дає вам дійсно простий шлях, якщо вам не потрібно щось конкретне.


8

Відповідь 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 .


2

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


Посібник "запропоновані кроки" переміщений сюди: static.springsource.org/spring-security/site/start-here.html
aliopi

1

Для чисто підручника з JAAS перегляньте це . Він старий, але повинен допомогти з основами JAAS.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.