java authentication and authorization service

24
www.proskar.pl JAAS Java Authentication and Authorization Service Warsztaty PROSKAR www.proskar.pl

Upload: proskar

Post on 09-Aug-2015

231 views

Category:

Technology


3 download

TRANSCRIPT

www.proskar.pl

JAAS Java Authentication and Authorization Service

Warsztaty PROSKAR

www.proskar.pl

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

Trochę teorii na początek

www.proskar.pl 3 / 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

Architektura JAAS

www.proskar.pl 7 / 24

Konfiguracja JAAS pod serwerem

www.proskar.pl 8 / 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

• Po utworzeniu nowej domeny klikamy przycisk View.

www.proskar.pl 11 / 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

Przykład powiązania z domeną

www.proskar.pl 18 / 24

Konfiguracja została ukończona

www.proskar.pl 19 / 24

Użycie JAAS w aplikacji

www.proskar.pl 20 / 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

Przykład

www.proskar.pl 22 / 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

Dziękuję za uwagę

www.proskar.pl 24 / 24