276 Oracle9iAS: instalacja i konfiguracja aplikacji J2EE Marek Wojciechowski Marek.Wojciechowski@cs.put.poznan.pl http://www.cs.put.poznan.pl/mwojciechowski/
Plan rozdziału 277 Przypomnienie architektury ias / OC4J Bezpieczeństwo w aplikacjach J2EE Pakowanie aplikacji J2EE typy archiwów JDeveloper: tworzenie archiwum EAR z aplikacją Zadania instalatora aplikacji Oracle Enterprise Manager: Instalacja aplikacji J2EE na serwerze ias
Architektura Oracle9iAS 278 użytkownicy HTTP Oracle HTTP Server (OHS) AJP Instancja Instancja Instancja OC4J OC4J OC4J administrator pliki konf. ORMI HTTP EM WebSite Aplikacje J2EE są instalowane na instancjach OC4J Dana aplikacja jest instalowana na konkretnej instancji ias może posiadać kilka instancji OC4J OC4J może również pracować jako samodzielny serwer (OC4J standalone) Głównie do zastosowań deweloperskich (np. wbudowany w JDeveloper)
Architektura OC4J Oracle Application 279 Server Containers for J2EE aplikacja A aplikacja B OC4J jest kontenerem J2EE Zgodny ze specyfikacją J2EE (1.3) Napisany w całości w języku Java Oparty na technologii serwera Orion Uruchamiany na standardowej JVM (np. z JDK) kontener kontener serwletów serwletów kontener kontener EJB EJB JNDI JNDI JMS JMS JDBC JDBC JTA JTA JAAS JAAS JCA JCA JavaMail JavaMail JAF JAF JVM JVM Na instancji OC4J może być zainstalowanych wiele aplikacji W Oracle9iAS na jedną instancję OC4J może składać się wiele procesów OC4J JSP EJB JSP
Pliki konfiguracyjne OC4J 280 Konfiguracja OC4J jest zawarta w plikach XML: server.xml, rmi.xml, jms.xml, application.xml, data-sources.xml principals.xml, jazn.xml, jazn-data.xml default-web-site.xml, global-web-application.xml Nie ma konieczności bezpośredniej edycji powyższych plików przy instalacji aplikacji Serwer uaktualnia odpowiednie pliki przy instalacji aplikacji Parametry dotyczące integracji OC4J i Oracle HTTP Server (OHS) zawarte są w jednym z plików konfiguracyjnych OHS: mod_oc4j.conf
Bezpieczeństwo w aplikacjach J2EE 281 Podstawowe idee: Polityka bezpieczeństwa specyfikowana deklaratywnie Kontrola dostępu na poziomie: Metod dla EJB Wzorców adresu URL dla komponentów webowych Przenaszalność Łatwość konfiguracji przy instalacji Implementacja polityki bezpieczeństwa oparta o: Logiczne role określane przez twórcę aplikacji Mapowanie logicznych ról zdefiniowanych w aplikacji na grupy i użytkowników na docelowym serwerze podczas instalacji
JAAS Java Authentication and Authorization Services 282 Uwierzytelnienie Operacja sprawdzenia tożsamości użytkownika Przypisanie użytkownikowi ról odpowiadających podanym parametrom logowania Autoryzacja Weryfikacja czy użytkownik ma prawo wykonania konkretnej operacji np. Wywołania danej metody komponentu EJB Uruchomienia konkretnego serwletu / JSP JAAS stanowi "framework" dla uwierzytelniania i autoryzacji Kontrola dostępu na poziomie wzorców URL i metod EJB Implementowany przez dostawców usług JAAS (JAAS providers)
JAAS w OC4J 283 Dostawca JAAS wbudowany w OC4J współpracuje z repozytoriami: LDAP do dostępu do Oracle Internet Directory (OID) Opartymi na XML dane o użytkownikach składowane w plikach: jazn-data.xml (hasła zaszyfrowane) - domyślny principals.xml (hasła niezaszyfrowane) Repozytoria zawierają: Realm użytkownicy i role Informacje o przywilejach (prawach dostępu)
Konfiguracja bezpieczeństwa w J2EE 284 Definicja użytkowników i grup: np. w jazn-data.xml dla JAZN (Java Authorization) Definicja logicznych ról w aplikacji i obrazu polityki bezpieczeństwa z punktu widzenia twórcy aplikacji: Deskryptory instalacji: web.xml, ejb-jar.xml Mapowanie logicznych ról na grupy/użytkowników docelowego serwera: Deskryptory instalacji specyficzne dla OC4J: orion-web.xml, orion-ejb-jar.xml Umożliwienie użytkownikom dostępu do przestrzeni nazw JNDI: application.xml, orion-application.xml
285 Bezpieczeństwo w J2EE - Przykład (1/8) Definicja logicznych ról dla modułu aplikacji J2EE
286 Bezpieczeństwo w J2EE - Przykład (2/8) Ograniczenie dostępu do metod EJB w oparciu o role ejb-jar.xml <ejb-jar>... <assembly-descriptor> <security-role> <description> Finance Manager </description> <role-name>sr_finance</role-name> </security-role> <method-permission> <role-name>sr_finance</role-name> <method> <ejb-name>emp</ejb-name> <method-name>getsal</method-name> </method> <method> <ejb-name>emp</ejb-name> <method-name>setsal</method-name> <method-params> <method-param> java.lang.long </method-param> </method-params> </method> </method-permission> </assembly-descriptor> </ejb-jar>
287 Bezpieczeństwo w J2EE - Przykład (3/8) Wybór metody uwierzytelnienia dla komponentu webowego
288 Bezpieczeństwo w J2EE - Przykład (4/8) Ograniczenie dostępu do komponentów webowych w oparciu o role i wzorzec URL
289 Bezpieczeństwo w J2EE - Przykład (5/8) Ograniczenie dostępu do komponentów webowych w oparciu o role i wzorzec URL zawartość web.xml web.xml <web-app>... <security-constraint> <web-resource-collection> <web-resource-name>salary Report</web-resource-name> <url-pattern>/salaries.jsp</url-pattern> </web-resource-collection> <auth-constraint> <role-name>sr_finance</role-name> </auth-constraint> <user-data-constraint> <transport-guarantee>none</transport-guarantee> </user-data-constraint> </security-constraint> <login-config> <auth-method>basic</auth-method> <realm-name>jazn.com</realm-name> </login-config> <security-role> <description>finance Manager</description> <role-name>sr_finance</role-name> </security-role> </web-app>
290 Bezpieczeństwo w J2EE - Przykład (6/8) Zawarcie ról dla całej aplikacji w pliku application.xml Role wykorzystywane w komponentach webowych i JSP <application> <display-name>finance application</display-name> <security-role> <description>finance Manager</description> <role-name>sr_finance</role-name> </security-role> </application> application.xml
291 Bezpieczeństwo w J2EE - Przykład (7/8) Mapowanie ról aplikacji na użytkowników/grupy w OC4J Dla serwletów/jsp w orion-web.xml, dla EJB w orion-ejb-jar.xml, dla całej aplikacji w orion-application.xml Plik konf. OC4J: jazn-data.xml <jazn-data> <jazn-realm> <realm> <name>jazn.com</name> <users> <user> <name>anonymous</name> <description>default guest</description> </user> <user> <name>scott</name> <credentials>!tiger</credentials> </user>... </jazn-data> orion-web.xml <orion-web-app servlet-webdir="/servlet/"> <security-role-mapping impliesall="false" name="sr_finance"> <user name="anonymous"/> </security-role-mapping> </orion-web-app>
292 Bezpieczeństwo w J2EE - Przykład (8/8) Komponent webowy wywołując metody komponentu EJB przekazuje mu informacje o zalogowanym użytkowniku poprzez kontekst EJB: Uwierzytelnienie można powierzyć komponentowi webowemu Metody EJB o ograniczonym dostępie powinny być przy takim podejściu wołane z komponentów webowych wymagających uwierzytelnienia
Typy archiwów: JAR, WAR i EAR 293 Aplikacje i biblioteki klas Java są typowo dystrybuowane w archiwach JAR Archiwa zip zawierające drzewo katalogów o określonej strukturze (np. podkatalogi dla pakietów) i pliki konfiguracyjne (np. META-INF/manifest.mf) Skompresowane lub nie Tworzone narzędziami: jar (JDK), winzip, gzip,... Platforma J2EE korzysta z następujących formatów archiwów: EJB JAR specjalizowany JAR dla modułów komponentów EJB WAR dla modułów webowych EAR dla aplikacji (zbudowanych z modułów EJB i webowych)
Archiwum EJB JAR 294 Archiwum JAR do pakowania modułów EJB aplikacji J2EE Mają ustaloną strukturę drzewa katalogów Zawierają deskryptor instalacji EJB (ejb-jar.xml) nazwa_modułu/ META-INF/ ejb-jar.xml Klasy i interfejsy komponentów EJB w podkatalogach odpowiadających pakietom
Archiwum WAR 295 Archiwum do pakowania modułów webowych aplikacji J2EE Mają ustaloną strukturę drzewa katalogów Zawierają deskryptor instalacji dla komponentów webowych (web.xml) nazwa_komponentu/ WEB-INF/ web.xml pliki JSP pliki HTML classes/ lib/ klasy serwletów i JavaBeans Klasy "biblioteczne" w archiwach JAR
Archiwum EAR 296 Aplikacja J2EE może składać się z następujących modułów: Moduł webowy (serwlety, JSP, HTML): plik WAR Moduł EJB (komponenty EJB): plik EJB JAR Moduł klienta J2EE: plik JAR Specyfikacja J2EE definiuje układ archiwum zawierającego aplikację J2EE (plik EAR): nazwa_aplikacji/ META-INF/ application.xml plik EJB JAR plik WAR plik JAR z aplikacją klienta
JDeveloper tworzenie pliku EAR (1/4) 297 Tworzenie profili instalacji Najpierw dla modułów EJB, następnie modułów webowych Na końcu główny docelowy profil: plik EAR 3) 1) 2)
JDeveloper tworzenie pliku EAR (2/4) 298 EJB JAR np. ejb1.deploy Wybór plików Czy również kod źródłowy w archiwum?
JDeveloper tworzenie pliku EAR (3/4) 299 WAR: np. webapp1.deploy Ścieżka URL do korzenia modułu webowego Moduł webowy korzysta z EJB konieczne interfejsy EJB w pliku WAR
JDeveloper tworzenie pliku EAR (4/4) 300 Tylko tworzenie pliku EAR lub tworzenie i instalacja EAR: np. financeapp.deploy Wskazanie profili instalacji modułów składowych
301 Podział zadań - Role Developer i Deployer J2EE jasno specyfikuje podział zadań między twórcę i instalatora aplikacji Konsekwencja idei łatwej przenaszalności aplikacji Twórca aplikacji (Developer) Tworzy aplikację opartą o abstrakcyjny schemat bazy danych Posługuje się pośrednimi referencjami do zasobów (np. źródeł danych) Definiuje politykę bezpieczeństwa w oparciu o logiczne role Instalator aplikacji (Deployer) Mapuje abstrakcyjny schemat bazy danych w odpowiedni schemat fizycznie dostępny na serwerze bazy danych Mapuje zdefiniowane w aplikacji referencje do zasobów w zasoby zdefiniowane na serwerze (instancji OC4J) Mapuje logiczne role użytkowników aplikacji na grupy i użytkowników na serwerze (instancji OC4J)
302 Sposoby instalacji aplikacji J2EE na 9iAS Oracle Enterprise Manager Korzystający z narzędzia DCM Instalacja przez WWW Zalecany sposób instalacji w środowisku produkcyjnym Narzędzie linii komend: dcmctl Tekstowy interfejs do DCM Przydatne przy wsadowej instalacji wielu aplikacji JDeveloper Szczególnie przy testowaniu poprawności tworzonego pliku EAR Niezalecane sposoby: Narzędzie admin.jar OC4J (wykorzystywane dla OC4J standalone) "Ręczna" modyfikacja plików konfiguracyjnych serwera
303 Akcje wykonywane przez serwer podczas instalacji aplikacji J2EE Analiza pliku application.xml w celu identyfikacji modułów składowych Odczyt deskryptorów instalacji modułów Również specyficznych dla OC4J jeśli dystrybuowane z aplikacją Zapisanie domyślnych wartości parametrów konfiguracyjnych w deskryptorach instalacji specyficznych dla OC4J (dla parametrów niezdefiniowanych w plikach zawartych z aplikacją) Zapisanie nowych deskryptorów instalacji do katalogu application-deployments Skopiowanie archiwum EAR do katalogu applications Modyfikacja pliku server.xml Modyfikacja pliku mod_oc4j.conf
OEM Administracja instancjami OC4J 304 Tworzenie źródeł danych dla instancji i poszczególnych aplikacji Tworzenie użytkowników i grup użytkowników dla instancji i poszczególnych aplikacji Instalacja aplikacji J2EE (EAR, WAR) Mapowanie źródeł danych Mapowanie logicznych ról aplikacji do użytkowników i grup Deinstalacja aplikacji J2EE Monitorowanie działania instancji i poszczególnych aplikacji
OEM Strona instancji serwera ias 305
OEM Strona instancji OC4J 306
307 OEM Strona źródeł danych instancji OC4J
OEM Definiowanie źródła danych 308
OEM grupy i użytkownicy dla instancji 309 OC4J
OEM Przebieg instalacji aplikacji J2EE 310 Instalacja: Krok 1) Ekran powitalny plan instalacji Krok 2) Wskazanie lokalizacji archiwum EAR Krok 3) Mapowanie adresów URL do modułów webowych Krok 4) Mapowanie referencji do zasobów Krok 5) Wybór menedżera użytkowników (np. JAZN) Krok 6) Mapowanie logicznych ról do użytkowników / grup Krok 7) Publikacja Web Services Krok 8) Ekran podsumowujący instalację Opcjonalne czynności po instalacji Utworzenie źródeł danych dla aplikacji, jeśli przy instalacji podano nieistniejące Utworzenie grup i użytkowników specyficznych dla aplikacji i mapowanie ich do logicznych ról aplikacji
OEM Instalacja aplikacji J2EE (1/4) 311 Krok 1: ekran powitalny Krok 2: wybór pliku EAR
OEM Instalacja aplikacji J2EE (2/4) 312 Krok 3: mapowanie modułów webowych do ścieżek URL Krok 4: - referencje na źródła danych - źródła danych dla CMP
OEM Instalacja aplikacji J2EE (3/4) 313 Krok 5: menedżer użytkowników Krok 6: mapowanie ról
OEM Instalacja aplikacji J2EE (4/4) 314 Krok 8 (Krok 7 został pominięty brak serwisów w aplikacji)
315 OEM Konfiguracja aplikacji J2EE (1/2) Definiowanie użytkowników / grup na poziomie aplikacji
316 OEM Konfiguracja aplikacji J2EE (2/2) Definiowanie źródła danych dla zainstalowanej aplikacji
OEM Monitorowanie pracy modułów aplikacji 317