Trudno mi zrozumieć JAAS. Wszystko wydaje się bardziej skomplikowane niż powinno (szczególnie samouczki Sun). Potrzebuję prostego samouczka lub przykładu jak wdrożyć zabezpieczenia (uwierzytelnianie + autoryzacja) w aplikacji java opartej na Struts + Spring + Hibernate z niestandardowym repozytorium użytkowników. Można zaimplementować za pomocą ACEGI.
83
Odpowiedzi:
Oto kilka linków, których użyłem, aby pomóc zrozumieć 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/
Zapoznaj się również z instrukcją konfiguracji domen Apache tomcat:
http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html
źródło
Inni użytkownicy udostępnili powyżej kilka bardzo przydatnych linków, więc nie będę się nimi przejmować. Przeprowadziłem podobne badania w JAAS dla aplikacji internetowych i natrafiłem na „przeszkodę dla umysłu”, aż w końcu zdałem sobie sprawę, że JAAS to framework zajmujący się bezpieczeństwem na innej „warstwie” niż aplikacje internetowe w świecie Java. Został stworzony do rozwiązywania problemów związanych z bezpieczeństwem w Javie SE, a nie Java EE.
JAAS to platforma bezpieczeństwa stworzona do zabezpieczania rzeczy na znacznie niższym poziomie niż aplikacja internetowa. Przykładem takich rzeczy jest kod i zasoby dostępne na poziomie JVM, stąd wszystkie te możliwości ustawiania plików strategii na poziomie JVM.
Ponieważ jednak Java EE jest oparta na Java SE, kilka modułów JAAS zostało ponownie wykorzystanych w zabezpieczeniach Java EE, takich jak LoginModules i Callbacks.
Zauważ, że oprócz bezpieczeństwa Java EE, istnieje również zabezpieczenie Spring (wcześniej znane jako Acegi), które podobnie jak natywne zabezpieczenia Java EE rozwiązuje znacznie wyższą „warstwę” w zabezpieczaniu aplikacji internetowych. Jest to osobna implementacja zabezpieczeń i nie jest oparta na standardowym zabezpieczeniu Java EE, chociaż pod wieloma względami zachowuje się podobnie.
Podsumowując, jeśli nie chcesz zabezpieczyć zasobów na poziomie Java SE (klasy, zasoby systemowe), nie widzę żadnego rzeczywistego zastosowania JAAS poza wykorzystaniem wspólnej klasy i interfejsów. Skoncentruj się na używaniu Spring Security lub zwykłego starego zabezpieczenia Java EE, które rozwiązuje wiele typowych problemów z bezpieczeństwem aplikacji internetowych.
źródło
javax.security to zbyt skomplikowany interfejs API. W rezultacie istnieją implementatorzy nie tylko LoginModules, ale całego interfejsu API uwierzytelniania i autoryzacji, który tworzy warstwę abstrakcji powyżej, podobnie jak menedżerowie uwierzytelniania i autoryzacji.
Na początek dobrze jest wydrukować to w swojej pamięci.
Po drugie, imho najprostszą biblioteką do konfiguracji i pracy dla JAAS jest Jboss PicketBox . Mówi, jak wykonać uwierzytelnianie i autoryzację za pośrednictwem JBossAuthenticationManager i JBossAuthorizationManager ... Łatwo konfigurowalne za pomocą XML lub adnotacji. Możesz go używać do zarządzania zarówno aplikacjami internetowymi, jak i samodzielnymi aplikacjami.
Jeśli potrzebujesz części autoryzacyjnej do zarządzania dostępem do repozytorium, w zakresie ACL dla zasobów, tego na pewno szukasz.
Problem z bezpieczeństwem polega na tym, że zazwyczaj musisz dostosować go do swoich potrzeb, więc możesz w końcu zaimplementować:
LoginModule - weryfikuje nazwę użytkownika + hasło
CallbackHandler jest używany w ten sposób
new LoginContext("Sample", new MyCallbackHandler());
CallbackHandler jest przekazywany do bazowych LoginModules, dzięki czemu mogą komunikować się i wchodzić w interakcje z użytkownikami - na przykład monitując o nazwę użytkownika i hasło za pośrednictwem graficznego interfejsu użytkownika. Tak więc wewnątrz Handler otrzymujesz nazwę użytkownika i hasło od użytkownika i są one przekazywane do LoginModule.
LoginContext - wtedy po prostu wywołujesz lc.login (); i uwierzytelnij poświadczenia. LoginContext jest wypełniany uwierzytelnionym tematem.
Jednak pikieta Jboss daje naprawdę łatwy sposób, chyba że potrzebujesz czegoś konkretnego.
źródło
Odpowiedź lsiu jest jedną z niewielu odpowiedzi, które naprawdę "rozumiem";)
Dodając do tej odpowiedzi, naprawdę dobrą referencją na ten temat jest „ Cokolwiek się stało z JAAS? .
Wyjaśnia, w jaki sposób JASPIC jest łącznikiem w Java EE między modelami bezpieczeństwa serwletu i EJB oraz potencjalnie modułem logowania JAAS, ale w wielu przypadkach rola JAAS jest zredukowana do stosunkowo prostej nazwy użytkownika i dostawcy ról w Java EE.
Od tego samego autora pochodzi JAAS in the Enterprise , który jest starszym artykułem, ale dostarcza wielu historycznych informacji na temat tego, dlaczego modele Java SE (JAAS) i Java EE rozeszły się w ten sposób.
Ogólnie jednak kilka typów z JAAS są bezpośrednio stosowane w Java EE, w zasadzie
Principal
,Subject
iCallbackHandler
. Z tych dwóch ostatnich korzysta głównie JASPIC. JASPIC wyjaśniłem w artykule Implementowanie uwierzytelniania kontenerów w Java EE z JASPIC .źródło
Nie mogę mówić zbyt wiele do samego JAAS, ale ten przewodnik „sugerowanych kroków” w Spring Security i podręcznik referencyjny to całkiem dobre zasoby dotyczące Spring Security - jeśli twoja konfiguracja jest prawie prosta, tak naprawdę nie musisz zrobić znacznie więcej niż je przeczytać.
źródło
Aby zapoznać się z samouczkiem dotyczącym wyłącznie JAAS, sprawdź to . Jest stary, ale powinien pomóc w podstawach JAAS.
źródło