• Nie Znaleziono Wyników

Przykład 1

N/A
N/A
Protected

Academic year: 2021

Share "Przykład 1"

Copied!
52
0
0

Pełen tekst

(1)

Programowanie komponentowe

Przykład 1

Bezpieczeństwo

wg „The Java EE 5 Tutorial

Autor: Zofia Kruczkiewicz

(2)

Struktura wykładu

1. Utworzenie użytkowników i ról na serwerze aplikacji Sun Java System Application Server (GlassFish)

2. Definiowanie ról w serwerze Tomcat Web Server 3. Konfigurowanie logowania

4. Wstawianie ról użytkowników do aplikacji

5. Tworzenie i konfiguracja ograniczeń bezpieczeństwa dla typu użytkownika administrator z największymi ograniczeniami 6. Tworzenie i konfiguracja ograniczeń bezpieczeństwa dla typu

użytkownika z wybranymi ograniczeniami 7. Ustawienie czasu sesji

8. Zawartość deskryptora aplikacji web.xml

9. Mapowanie mechanizmów bezpieczeństwa z aplikacji do serwera

aplikacji - uruchomienie aplikacji w trybie uwierzytelniania Form-Based Authentication, zabezpieczenia przez role

10. Uruchomienie aplikacji w trybie uwierzytelniania Basic-Based Authentication, zabezpieczenia przez role

(3)

1. Utworzenie użytkowników i ról na serwerze aplikacji Sun Java System Application Server (GlassFish)

1) Dodanie użytkowników do Serwera aplikacji JavaEE

Uruchom Serwer aplikacji (np. klikając prawym klawiszem myszy w zakładce Services środowiska NetBeans6.1na opcję GlassFish V2 i wybierając z menu pozycję Start )

Uruchom Admin Console (np. klikając prawym klawiszem myszy w zakładce Services na opcję GlassFish V2 i wybierając z menu pozycję View Admin Console lub po uruchomieniu przeglądarki podając adres url np.

http://localhost:13780/login.jsf. Port serwera np. 13780 jest indywidualnie ustalany podczas instalacji serwera.)

• Należy zalogować się podając np.. Nazwę użytkownika admin oraz hasło adminadmin (można to zmienić albo podczas instalacji lub wg wskazówek poadnych w dalszej części)

• Należy wybrać opcję Configuration w drzewie Admin Console.

• Należy wybrać opcję Security w drzewie Admin Console.

• Należy wybrać opcję Realms:

1. Należy wybrać opcję admin-realm do wstawienia użytkowników występujących w roli administratorów Serwera Aplikacji.

2. Należy wybrać opcję file do wstawienia nowego użytkownika, który może być uwierzytelniany w aplikacjach JavaEE

3. Do opcji certificate można wprowadzić jedynie certyfikaty ustalone np. za pomocą narzędzia keytool

(4)

Ad 1, 2 file, admin-realm

Kliknij na przycisk Manage Users.

Kliknij na przycisk New w celu dodania nowego użytkownika.

Podaj poprawny dane do pól User ID, typu Password i Group List

– Jeśli dodaje się użytkownika do file realm, wstawione dane służą do rozpoznania danych użytkowników aplikacji JavaEE wstawianych do formularza logowania podczas uruchamiania tej aplikacji.

– Jeśli dodaje się użytkownika do admin-realm, wstawione poprawne dane do pól User ID, typu Password służą do rozpoznania danych serwera aplikacji JavaEE, natomiast należy wstawić asadmin w polu Group List

Kliknij na przycisk OK w celu dodania nowego użytkownika.

Kliknij na przycisk Logout w celu zakończenia zadania.

2) ***Dodawanie użytkowników do Certificate Realm

W bazie certificate realm, dane identyfikujące użytkownika są

używane do weryfikowania danych otrzymywanych z certyfikatów

klientów

(5)

1) Dodanie użytkowników do Serwera aplikacji JavaEE

(6)
(7)
(8)
(9)

Wstawienie zwykłego użytkownika z ograniczonymi

uprawnieniami, które zostaną ustawione na poziomie aplikacji

(10)
(11)

Wstawienie użytkownika z pełnymi uprawnieniami, które zostaną

ustawione na poziomie aplikacji

(12)
(13)

2. Definiowanie ról w serwerze Tomcat Web Server

(14)
(15)

3. Konfigurowanie logowania – deskryptor aplikacji web.xml po

wybraniu opcji Security -> Login Configuration

(deklaratywne konfigurowanie mechanizmów bezpieczeństwa w kontenerze internetowym )

(16)

4. Wstawianie ról użytkowników do aplikacji – deskryptor aplikacji web.xml po wybraniu opcji Security-> Security Roles

(deklaratywne

konfigurowanie mechanizmów bezpieczeństwa w kontenerze internetowym )

(17)

5. Tworzenie i konfiguracja ograniczeń bezpieczeństwa dla typu użytkownika administrator z największymi ograniczeniami – deskryptor aplikacji web.xml po wybraniu opcji

Security->Security Constraints (deklaratywne konfigurowanie mechanizmów bezpieczeństwa w kontenerze internetowym )

(18)

5.1. Podanie nazwy AdministratorConstraint ograniczeń w Display name

(19)

5.2. Dodanie kolekcji autoryzowanych adresów URL za pomocą opcji Web Resources Collection -> Add – ustawiono dostęp do

wszystkich stron o wzorcu adresu URL /faces/*

(20)

5.3. Przypisanie roli administrator1 do ustawianych ograniczeń AdministratorConstraint za pomocą opcji Enable Authentication Constraint i wyborze Edit

(21)

5.4. Przypisanie niezabezpieczonego protokołu transportu do ustawianych ograniczeń AdministratorConstraint za pomocą opcji Enable User Data Constrant i

Transport Guarantee = NONE

(22)

6. Tworzenie i konfiguracja ograniczeń bezpieczeństwa dla typu użytkownika z wybranymi ograniczeniami – deskryptor aplikacji web.xml po wybraniu opcji Security->Security Constraints

(deklaratywne konfigurowanie mechanizmów bezpieczeństwa w kontenerze internetowym ).

Po wyborze opcji Display Name nadano nazwę ograniczeniom KlientConstraint

(23)

6.1. Dodanie kolekcji autoryzowanych wybranych wzorców adresów URL za pomocą opcji Web Resources Collection -> Add

(24)
(25)

6.2. Przypisanie roli klient1 do ustawianych ograniczeń KlientConstraint za pomocą opcji Enable Authentication Constraint i wyborze Edit

(26)

6.3. Przypisanie niezabezpieczonego protokołu transportu do ustawianych ograniczeń KlientConstraint za pomocą opcji Enable User Data Constrant i

Transport Guarantee = NONE

(27)

7. Ustawienie czasu sesji

(28)

8. Zawartość deskryptora aplikacji web.xml

(29)
(30)
(31)

Definicja ról i systemowy formularz logowania

(32)

9. Mapowanie mechanizmów bezpieczeństwa z aplikacji do serwera aplikacji za pomocą mapowania ról bezpieczeństwa z pliku web.xml do deskryptora serwera aplikacji sun-web.xml

(33)

9.1. Mapowanie roli do encji prezentowanych przez administratora za pomocą opcji Add Principal

(34)

9.2. Mapowanie roli do encji prezentowanych przez klienta za pomocą opcji Add Group

(35)

9.3. Zawartość deskryptora serwera aplikacji

(36)

9.4. Uruchomienie aplikacji w trybie uwierzytelniania

Basic-Based Authentication HTTP, zabezpieczenia przez role

(37)
(38)

Niedostępne strony dla użytkownika „klient” występującego w roli „klient1”

(objęte ograniczeniem Web Resource Collection)

(39)

10. Uruchomienie aplikacji w trybie uwierzytelniania

Form-Based Authentication, zabezpieczenia przez role

(40)

10.1. Deklaracja formularza okna logowania w pliku deskryptora

aplikacji – web.xml

(41)

10.2. Zawartość formularza logowania

(42)

10.3. Zawartość okna obsługi błędu logowania

(43)

10.4.Uruchomienie aplikacji w trybie uwierzytelniania Form,

zabezpieczenia przez role

(44)
(45)

Niedostępne strony dla użytkownika występującego w roli „klient1” (objęte ograniczeniem Web Resource Collection)

(46)

11. Programowe mechanizmy bezpieczeństwa aplikacji (na poziomie kontenera)

Interfejs

HttpServletRequest

dostarcza następujące metody umożliwiające

dostęp do informacji o bezpieczeństwie dostępu nałożonym na użytkownika aplikacji:

1. getRemoteUser:

podaje nazwę zdalnego użytkownika, który był

uwierzytelniony. Jeśli nie uwierzytelniano użytkownika, metoda zwraca null.

2. isUserInRole:

określa czy zdalny użytkownik występuje w roli podanej jako parametr typu String metody isUserInRole. Jeśli nie uwierzytelniano

użytkownika, metoda zwraca false.

Można również użyć jako parametru metody roli zdefiniowanej za pomocą adnotacji @DeclareRoles lub nazwy roli zdefiniowanej w zasięgu elementu

<security-role-ref> w zagnieżdżonym elemencie <role-name> w deskryptorze aplikacji.

3. getUserPrincipal:

podaje nazwę typu principal bieżącego użytkownika i zwraca obiekt typu java.security.Principal. Jeśli nie uwierzytelniano

użytkownika, metoda zwraca null.

(47)

Ad. 2

(48)

Ad.3 - W klasie Page1.java strony startowej w metodzie prerender pobrano metodą getExternalContext obiekt implementujący interfejs HttpServletRequest i następnie

metodą getUserPrincipal pobrano obiekt typu java.security.Principal,

reprezentujący nazwę uwierzytelnionego użytkownika. Pobrana nazwa jest porównana z nazwą „klient”. Jeśli uwierzytelniony użytkownik ma nazwę „klient”, wartość atrybutu

wylacz w SessionBean1 jest ustawiona na false.

Nazwę użytkownika należy pobierać np. z pliku – w przykładzie wbudowano nazwę w kod źródłowy, co

pogarsza elastyczność i bezpieczeństwo rozwiązania!

(49)

Definicja atrybutu wylacz typu boolean w klasie

SessionBean1

(50)

Powiązanie w klasie Tytuly.java strony aplikacji właściwości rendered przycisku dodajtytul typu Button z atrybutem wylacz typu boolean w klasie SessionBean1. Domyślna wartość zmiennej wylacz jest równa true, natomiast po uwierzytelnieniu bieżącego klienta o nazwie „klient” wartość

atrybutu jest ustawiona na false – wtedy kod html przycisku jest usunięty ze strony w fazie response.

(51)

Po uwierzytelnieniu klienta o nazwie

„klient” nie wyświetla się przycisk

dodajtytul

(52)

Po uwierzytelnieniu klienta o nazwie

„administrator” wyświetla się przycisk

dodajtytul

Cytaty

Powiązane dokumenty

informacje z Twojego konta w dzienniku elektronicznym Synergia, konieczne jest powiązanie tego konta z nowo utworzonym Kontem LIBRUS.. To jednorazowy proces – raz podpięte

Wymiary: minimum 6 x 2 cm Materiał: tworzywo sztuczne Stan: Nowy. 3

Strona 5 z 6 Jeśli chcemy zbierać imiona i nazwiska i/lub adresy e-mail ankietowanych, do formularza należy dodać pytanie typu Krótka odpowiedź.. Wystarczy z

Opcjonalnie można zaznaczyć także pole znacznika Pomiń okno logowania, co spowoduje, że przy kolejnym uruchomieniu aplikacji Użytkownik zostanie automatycznie

Zmiana hasła przed zalogowaniem się (użytkownik nie pamięta hasła, chce uzyskać dostęp do portalu) – po wprowadzeniu adresu portalu oraz przejściu przez

c) jednym z głównych celów statutowych organizacji jest odnowa i rozwój wsi (miejscowości),.. d) opcjonalnie w statucie stowarzyszenia powinien znaleźć się zapis, że „Odnowę

mierzenie przedziałów czasu; do mierzenia długich przedziałów czasu służą zazwyczaj zegary, natomiast do pomiarów przedziałów krótszych stosuje się specjalne

- za faktycznie zatankowane paliwo według aktualnie obowiązujących cen hurtowych (producenta) na stacji paliw na której zatankowano paliwo z zastosowaniem stałego