java authentication and authorization service
TRANSCRIPT
Plan prezentacji
1. Przedstawienie podstawowych pojęć.
2. Omówienie architektury JAAS.
3. Przedstawienie konfiguracji JAAS pod serwerem WildFly.
4. Wykorzystanie JAAS w aplikacji.
www.proskar.pl 2 / 24
Pojęcia podstawowe
• Identyfikacja - określenie tożsamości podmiotu, w przypadku aplikacji webowych zwykle jest to login/adres e-mail
• Uwierzytelnienie(authentication) - weryfikacja tożsamości zadeklarowanej w procesie identyfikacji, w aplikacjach webowych zwykle poprzez hasło dostępowe do konta
• Autoryzacja (authorization) – potwierdzenie faktu posiadania dostępu do żądanego zasobu
www.proskar.pl 4 / 24
Czym jest JAAS?
• Usługa dostarczająca funkcjonalności identyfikacji, autentykacji i autoryzacji dla aplikacji implementowanych w Java.
• Nie ogranicza się ona jedynie do aplikacji webowych.
• Podstawowy mechanizm logowania (z użyciem serwleta j_security_check).
• Umożliwia rozdział zadań podczas uwierzytelniania użytkownika.
www.proskar.pl 5 / 24
Czym jest JAAS?
• Pozwala na komunikację z użyciem SSL.
• Daje duże możliwości konfigurowania systemu ról i uprawnień.
• Stanowi bazę dla takich frameworków bezpieczeństwa jak Spring Security i Apache Shiro.
• Kontekst logowania trzymany jest na serwerze aplikacyjnym.
www.proskar.pl 6 / 24
Pierwsze kroki
• Konfigurację należy zacząć od zalogowania się do konsoli administracyjnej i wybranie zakładki Configuration w menu Security Domains.
www.proskar.pl 9 / 24
Pierwsze kroki
• Kolejnym krokiem jest dodanie nowej domeny. W tym celu należy kliknąć przycisk Add i wypełnić formularz.
www.proskar.pl 10 / 24
Konfiguracji ciąg dalszy
• Następnie w widoku dodajemy za pomocą przycisku Add moduł logowania z użyciem bazy danych.
www.proskar.pl 12 / 24
Konfiguracji ciąg dalszy
• Po dodaniu modułu wybieramy go poprzez zaznaczenie wiersza a następnie przechodzimy do zakładki Module Options.
www.proskar.pl 13 / 24
Konfiguracji ciąg dalszy
• Po kliknięciu przycisku Add mamy możliwość dodania opcji modułu.
• Na następnych slajdach zostanie przedstawiony spis opcji jakie należy dodać.
www.proskar.pl 14 / 24
Niezbędne opcje
www.proskar.pl 15 / 24
Opcja Przykładowa wartość
password-stacking useFirstPass
dsJndiName java:jboss/datasources/PlaygroundDS
principalsQuery SELECT password FROM Users WHERE username=? and activated=true and locked=false
rolesQuery SELECT DISTINCT r.name, 'Roles' FROM Users u, User_UserGroup ug, UserGroup_JaasRole gr, JaasRole r WHERE u.id=ug.user_id AND ug.usergroup_id=gr.usergroup_id AND gr.jaasrole_id=r.id AND u.username=?
Niezbędne opcje
www.proskar.pl 16 / 24
Opcja Przykładowa wartość
hashAlgorithm SHA-256
hashEncoding Base64
hashCharset UTF-8
unauthenticatedIdentity guest
Finalizowanie konfiguracji
• Po przeprowadzeniu przedstawionych wcześniej kroków należy:
– Wyłączyć serwer,
– Otworzyć plik konfiguracyjny serwera (np. standalone.xml)
– Dodać odwołanie do utworzonej domeny.
– Uruchomić ponownie serwer.
www.proskar.pl 17 / 24
Uwierzytelnianie z JAAS
• Użycie JAAS zwykle przebiega w następujący sposób:
– Utworzenie instancji klasy LoginContext.
– Przekazanie obiektu CallbackHandler do wcześniej utworzonej instancji klasy LoginContext.
– Wywołanie metody login() z klasy LoginContext.
– Wykonanie wybranych akcji przy użyciu zwróconego obiektu klasy Subject.
www.proskar.pl 21 / 24
Omówienie przykładu
• Podczas inicjalizacji obiekt klasy LoginContext odnajduje w pliku konfiguracyjnym JAAS pozycję „MyExample”.
• Na jej podstawie określa, które moduły mają zostać załadowane.
• Podczas logowania obiekt klasy LoginContext wywołuje metodę login() dla każdego modułu.
• Każda metoda login() wykonuje uwierzytelnianie lub wywołuje CallbackHandler
• CallbackHandler używa jednego lub więcej callback’ów w celu interakcji z użytkownikiem.
• Obiekt klasy Subject jest wypełniany danymi uwierzytelniania.
www.proskar.pl 23 / 24