Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00149 009747 10452022 na godz. na dobę w sumie
JBoss 4.0. Podręcznik administratora - książka
JBoss 4.0. Podręcznik administratora - książka
Autor: Liczba stron: 616
Wydawca: Helion Język publikacji: polski
ISBN: 83-246-0092-2 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> serwery internetowe >> inne
Porównaj ceny (książka, ebook, audiobook).

Kompendium wiedzy o profesjonalnym serwerze aplikacji

Technologia J2EE święci triumfy. Programiści na całym świecie stosują ją do tworzenia rozbudowanych aplikacji korporacyjnych i e-commerce. Jednym z integralnych elementów systemu zbudowanego w tej technologii jest odpowiedni serwer aplikacji. Na rynku dostępnych jest kilka platform komercyjnych i zyskujący na popularności produkt open-source -- JBoss. JBoss to w pełni profesjonalny serwer aplikacji J2EE, który dzięki bezpłatnemu dostępowi znacznie redukuje koszty wdrożenia systemów informatycznych. Oczywiście to nie jedyna zaleta JBossa -- trudno pominąć jego stabilność i bezpieczeństwo, wsparcie ze strony tysięcy użytkowników z całego świata i modułową budowę, która pozwala na szybkie dodawanie kolejnych usług.

'JBoss 4.0. Podręcznik administratora' to wyczerpujące źródło informacji o najnowszej edycji JBossa. Autorami są twórcy JBossa, co gwarantuje wysoki poziom merytoryczny. Znajdziesz tu omówienie wszystkich zastosowań serwera oraz poznasz sposoby tworzenia i wdrażania aplikacji J2EE wykorzystujących komponenty EJB, serwlety, JMS i usługi sieciowe. Przeczytasz również o bezpieczeństwie serwera i aplikacji oraz obsłudze baz danych i transakcji. Książka zawiera szczegółowy opis jądra JBossa, technologii Hibernate oraz programowania aspektowego.

Poznaj architekturę serwera JBoss i skonfiguruj go tak,
aby pracował z maksymalną wydajnością.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREŒCI SPIS TREŒCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOŒCIACH O NOWOŒCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl JBoss 4.0. Podrêcznik administratora Autor: The JBoss Group T³umaczenie: Adam Bochenek, Piotr Rajca ISBN: 83-246-0092-2 Tytu³ orygina³u: JBoss 4.0 – The Official Guide Format: B5, stron: 616 Kompendium wiedzy o profesjonalnym serwerze aplikacji (cid:129) Proces instalacji i konfiguracji (cid:129) Tworzenie i udostêpnianie aplikacji (cid:129) Administrowanie serwerem i zabezpieczanie go Technologia J2EE œwiêci triumfy. Programiœci na ca³ym œwiecie stosuj¹ j¹ do tworzenia rozbudowanych aplikacji korporacyjnych i e-commerce. Jednym z integralnych elementów systemu zbudowanego w tej technologii jest odpowiedni serwer aplikacji. Na rynku dostêpnych jest kilka platform komercyjnych i zyskuj¹cy na popularnoœci produkt open-source — JBoss. JBoss to w pe³ni profesjonalny serwer aplikacji J2EE, który dziêki bezp³atnemu dostêpowi znacznie redukuje koszty wdro¿enia systemów informatycznych. Oczywiœcie to nie jedyna zaleta JBossa — trudno pomin¹æ jego stabilnoœæ i bezpieczeñstwo, wsparcie ze strony tysiêcy u¿ytkowników z ca³ego œwiata i modu³ow¹ budowê, która pozwala na szybkie dodawanie kolejnych us³ug. „JBoss 4.0. Podrêcznik administratora” to wyczerpuj¹ce Ÿród³o informacji o najnowszej edycji JBossa. Autorami s¹ twórcy JBossa, co gwarantuje wysoki poziom merytoryczny. Znajdziesz tu omówienie wszystkich zastosowañ serwera oraz poznasz sposoby tworzenia i wdra¿ania aplikacji J2EE wykorzystuj¹cych komponenty EJB, serwlety, JMS i us³ugi sieciowe. Przeczytasz równie¿ o bezpieczeñstwie serwera i aplikacji oraz obs³udze baz danych i transakcji. Ksi¹¿ka zawiera szczegó³owy opis j¹dra JBossa, technologii Hibernate oraz programowania aspektowego. (cid:129) Instalacja serwera (cid:129) Domyœlna struktura katalogów (cid:129) Pliki konfiguracyjne JBossa (cid:129) Zastosowanie mechanizmów JNDI (cid:129) Obs³uga transakcji (cid:129) EJB i serwlety (cid:129) Stosowanie us³ugi JMS (cid:129) Zabezpieczanie serwera JBoss (cid:129) Korzystanie z us³ugi Tomcat (cid:129) Mapowanie tabel baz danych na obiekty za pomoc¹ Hibernate (cid:129) Programowanie aspektowe Poznaj architekturê serwera JBoss i skonfiguruj go tak, aby pracowa³ z maksymaln¹ wydajnoœci¹ Spis treści Rozdział 1. O autorach ..................................................................................... 11 Wprowadzenie ................................................................................ 13 Instalacja i kompilacja serwera JBoss ............................................. 23 Pobranie plików binarnych ............................................................................................. 24 Warunki instalacji .................................................................................................... 24 Instalacja serwera przy użyciu pakietu zawierającego wersję binarną ........................... 24 Struktura katalogów serwera JBoss .......................................................................... 25 Domyślny zestaw konfiguracyjny serwera ............................................................... 25 confjboss-minimal.xml ........................................................................................... 27 confjboss-service.xml ............................................................................................. 27 confjboss.web ......................................................................................................... 27 confjndi.properties .................................................................................................. 27 conflog4j.xml .......................................................................................................... 28 conflogin-config.xml ............................................................................................... 28 confserver.policy ..................................................................................................... 28 confstandardjaws.xml ............................................................................................. 28 confstandardjboss.xml ............................................................................................. 28 confstandardjbosscmp-jdbc.xml .............................................................................. 28 confxmdesc*-mbean.xml ....................................................................................... 28 deploysh-deployer.xml .......................................................................................... 28 deploycache-invalidation-service.xml ..................................................................... 29 deployclient-deployer-service.xml .......................................................................... 29 deployear-deployer.xml .......................................................................................... 29 deployejb-deployer.xml .......................................................................................... 29 deployhsqldb-ds.xml ............................................................................................... 29 deployhttp-invoker.sar ............................................................................................ 29 deployjboss-aop.deployer ....................................................................................... 29 deployjboss-hibernate.deployer ............................................................................... 30 deployjboss-local-jdbc.rar ....................................................................................... 30 deployjboss-ws4ee.sar ............................................................................................. 30 deployjboss-xa-jdbc.rar ........................................................................................... 30 deployjbossjca-service.sar ....................................................................................... 30 deployjbossweb-tomcat50.sar ................................................................................. 30 deployjmshsqldb-jdbc2-service.xml ...................................................................... 30 deployjmsjbossmq-destinations-service.xml .......................................................... 31 deployjmsjbossmq-httpil.sar .................................................................................. 31 4 JBoss 4.0. Podręcznik administratora Rozdział 2. deployjmsjbossmq-service.xml .............................................................................. 31 deployjmsjms-ds.xml ............................................................................................. 31 deployjmsjms-ra.rar ............................................................................................... 31 deployjmsjvm-il-service.xml ................................................................................. 31 deployjmsuil2-service.xml ..................................................................................... 31 deployjmx-console.war ........................................................................................... 32 deployjmx-invoker-service.sar ................................................................................ 32 deploymail-ra.rar ..................................................................................................... 32 deploymail-service.xml ........................................................................................... 32 deploymanagementconsole-mgr.sar oraz web-console.war ................................... 32 deploymonitoring-service.xml ................................................................................ 32 deployproperties-service.xml .................................................................................. 33 deployscheduler-service.xml oraz schedule-manager-service.xml .......................... 33 deploysqlexception-service.xml .............................................................................. 33 deployuuid-key-generator.sar .................................................................................. 33 Sprawdzenie poprawności instalacji ............................................................................... 33 Ładowanie z serwera sieciowego ................................................................................... 35 Samodzielna kompilacja serwera JBoss na podstawie kodów źródłowych .................... 37 Dostęp do repozytorium CVS znajdującego się w serwisie SourceForge ................ 37 Repozytorium CVS .................................................................................................. 38 Anonimowy dostęp do CVS ..................................................................................... 38 Klient CVS ............................................................................................................... 39 Tworzenie dystrybucji serwera na podstawie kodu źródłowego .............................. 39 Kompilacja serwera na podstawie pobranego z repozytorium CVS kodu źródłowego ................................................................... 39 Drzewo katalogów zawierających kod źródłowy serwera ........................................ 40 Korzystanie z predefiniowanego zestawu testów JBoss ........................................... 40 Jądro serwera JBoss ....................................................................... 45 JMX ................................................................................................................................ 45 Wprowadzenie do JMX ............................................................................................ 46 Serwer JBoss jako implementacja architektury JMX ..................................................... 52 Architektura ładowania klas serwera JBoss ............................................................. 52 Ładowanie klas i typy języka Java ........................................................................... 52 Komponenty XMBean serwera JBoss ...................................................................... 74 Połączenie z serwerem JMX .......................................................................................... 81 Podglądanie serwera — konsola JMX ..................................................................... 81 Połączenie z JMX za pomocą RMI .......................................................................... 85 Dostęp do JMX z wiersza poleceń ........................................................................... 88 Łączenie z JMX za pomocą innych protokołów ....................................................... 93 JMX jako mikrojądro ..................................................................................................... 93 Proces uruchamiania serwera ................................................................................... 94 Usługi MBean serwera JBoss ................................................................................... 95 Tworzenie usług MBean ........................................................................................ 107 Zależności i kolejność wdrażania ........................................................................... 121 Architektura usług wdrażających serwera JBoss .......................................................... 131 Obiekty wdrażające a classloadery ......................................................................... 134 Udostępnianie zdarzeń komponentów MBean przez protokół SNMP .......................... 135 Usługa zamiany zdarzenia na pułapkę ................................................................... 137 Zdalny dostęp do usług, wydzielone usługi wywołujące .............................................. 137 Przykład użycia wydzielonej usługi wywołującej — usługa adaptora wywołań komponentu MBeanServer .................................... 140 JRMPInvoker — transport przy użyciu protokołu RMI/JRMP .............................. 147 PooledInvoker — transport przy użyciu RMI/gniazdo ........................................... 148 IIOPInvoker — transport przy użyciu RMI/IIOP ................................................... 148 Spis treści 5 JRMPProxyFactory — tworzenie dynamicznych pośredników JRMP .................. 149 HttpInvoker — RMI/HTTP Transport ................................................................... 149 HA JRMPInvoker — klastrowy transport RMI/JRMP ........................................... 150 HA HttpInvoker — klastrowy transport RMI/HTTP ............................................. 150 HttpProxyFactory — tworzenie dynamicznych pośredników HTTP ..................... 151 Czynności pozwalające udostępnić dowolny interfejs RMI przez protokół HTTP ........................................................................................... 152 Rozdział 3. Obsługa nazw ............................................................................... 155 Ogólna charakterystyka JNDI ...................................................................................... 155 JNDI API ............................................................................................................... 156 J2EE i JNDI — środowisko komponentu aplikacji ................................................ 158 Architektura JBossNS .................................................................................................. 170 Fabryki tworzące obiekt kontekstu początkowego — InitialContext ..................... 173 Dostęp do JNDI przy użyciu HTTP ....................................................................... 178 Dostęp do JNDI przy użyciu HTTPS ..................................................................... 181 Bezpieczny dostęp do JNDI przy użyciu HTTP ..................................................... 183 Bezpieczny dostęp do JNDI za pomocą niezabezpieczonego kontekstu tylko do odczytu ............................... 185 Dodatkowe komponenty związane z usługą nazw ................................................. 187 Rozdział 4. Transakcje ................................................................................... 193 Transakcje i JTA — wprowadzenie ............................................................................. 193 Blokowanie pesymistyczne i optymistyczne .......................................................... 194 Składniki transakcji rozproszonej .......................................................................... 195 Dwufazowy protokół XA ....................................................................................... 196 Wyjątki heurystyczne ............................................................................................. 196 Tożsamość i gałęzie transakcji ............................................................................... 197 Obsługa transakcji w serwerze JBoss ........................................................................... 197 Podłączenie menedżera transakcji do serwera JBoss ............................................. 198 Domyślny menedżer transakcji .............................................................................. 199 Obsługa interfejsu UserTransaction ....................................................................... 200 Rozdział 5. Komponenty EJB w JBoss ............................................................. 201 Komponenty EJB widziane z perspektywy klienta ...................................................... 201 Ustalenie konfiguracji pełnomocnika EJB ............................................................. 205 Komponenty EJB widziane z perspektywy serwera ..................................................... 210 Wydzielona usługa wywołująca — doręczyciel żądań ........................................... 210 Transport przy użyciu RMI/JRMP w środowisku klastrowym — JRMPInvokerHA ............................................................................................ 214 Transport przy użyciu RMI/HTTP w środowisku klastrowym — HTTPInvokerHA ............................................................................................ 214 Kontener EJB ............................................................................................................... 216 Komponent MBean EJBDeployer .......................................................................... 216 Struktura kontenera bazująca na modułach ............................................................ 231 Blokowanie komponentów encyjnych i wykrywanie zakleszczeń ............................... 243 Dlaczego blokowanie jest potrzebne ...................................................................... 244 Cykl życia komponentu encyjnego ........................................................................ 244 Domyślna strategia blokowania ............................................................................. 245 Dodatkowe obiekty przechwytujące i reguły blokowania ...................................... 245 Zakleszczenie ......................................................................................................... 246 Zaawansowana konfiguracja i optymalizacja ......................................................... 249 Uruchamianie komponentów w środowisku klastrowym ....................................... 251 Rozwiązywanie problemów ................................................................................... 251 6 JBoss 4.0. Podręcznik administratora Rozdział 6. Usługa komunikatów JMS w JBoss ................................................ 253 Przykłady użycia JMS .................................................................................................. 253 Przykład komunikacji typu punkt-punkt ................................................................ 254 Przykład komunikacji typu wydawca-abonent ....................................................... 256 Przykład komunikacji wydawca-abonent z obsługą trwałego tematu .................... 261 Przykład komunikacji punkt-punkt połączonej z użyciem komponentu sterowanego komunikatami (MDB) ............................... 264 Ogólna charakterystyka JBossMQ ............................................................................... 271 Usługi warstwy wywoływań .................................................................................. 271 Usługa SecurityManager ........................................................................................ 272 Usługa DestinationManager ................................................................................... 272 Usługa MessageCache ........................................................................................... 272 Usługa StateManager ............................................................................................. 273 Usługa PersistenceManager ................................................................................... 273 Miejsce docelowe komunikatów ............................................................................ 273 Konfiguracja komponentów MBean wchodzących w skład JBossMQ ........................ 274 Komponent org.jboss.mq.il.jvm.JVMServerILService .......................................... 275 Komponent org.jboss.mq.il.uil2.UILServerILService ............................................ 275 Komponent org.jboss.mq.il.http.HTTPServerILService ........................................ 278 Komponent org.jboss.mq.server.jmx.Invoker ........................................................ 279 Komponent org.jboss.mq.serwer.jmx.InterceptorLoader ....................................... 280 Komponent org.jboss.mq.sm.jdbc.JDBCStateManager ........................................... 280 Komponent org.jboss.mq.security.SecurityManager .............................................. 280 Komponent org.jboss.mq.server.jmx.DestinationManager .................................... 281 Komponent org.jboss.mq.server.MessageCache .................................................... 283 Komponent org.jboss.mq.pm.jdbc2.PersistenceManager ....................................... 284 Komponenty MBean reprezentujące miejsca docelowe ............................................. 286 Określanie dostawcy JMS dla kontenera MDB ............................................................ 290 Komponent org.jboss.jms.jndi.JMSProviderLoader .............................................. 291 Komponent org.jboss.jms.asf.ServerSessionPoolLoader ....................................... 293 Integracja z innymi dostawcami JMS ..................................................................... 293 Rozdział 7. JCA w JBoss ................................................................................. 295 Ogólna charakterystyka JCA ........................................................................................ 295 Architektura JBossCX .................................................................................................. 297 Komponent BaseConnectionManager2 .................................................................. 299 Komponent RARDeployment ................................................................................ 300 Komponent JBossManagedConnectionPool .......................................................... 301 Komponent CachedConnectionManager ................................................................ 302 Przykładowy szkielet adaptera zasobów JCA ........................................................ 303 Konfiguracja źródeł danych JDBC ............................................................................... 310 Konfiguracja ogólnych adapterów JCA ........................................................................ 319 Rozdział 8. Bezpieczeństwo ............................................................................ 323 Deklaratywny model obsługi bezpieczeństwa J2EE ..................................................... 323 Referencje — element security-role-ref ................................................................. 324 Tożsamość — element security-identity ................................................................ 325 Role — element security-role ................................................................................ 326 Uprawnienia wywoływania metod ......................................................................... 328 Uprawnienia dotyczące aplikacji sieciowych ......................................................... 331 Obsługa bezpieczeństwa deklaratywnego w serwerze JBoss ................................. 333 Wprowadzenie do JAAS .............................................................................................. 334 Czym jest JAAS? ................................................................................................... 334 Spis treści 7 Model bezpieczeństwa serwera JBoss .......................................................................... 339 Obsługa bezpieczeństwa deklaratywnego w serwerze JBoss, odsłona druga ......... 341 Architektura JBossSX .................................................................................................. 346 W jaki sposób JaasSecurityManager korzysta z JAAS .......................................... 348 Komponent JaasSecurityManagerService .............................................................. 351 Komponent JaasSecurityDomain ........................................................................... 353 Komponent ładujący plik XML z konfiguracją logowania .................................... 355 Komponent zarządzający konfiguracją logowania ................................................. 357 Używanie i tworzenie modułów logowania JBossSX ............................................ 358 Usługa DynamicLoginConfig ................................................................................ 382 Protokół Secure Remote Password (SRP) .................................................................... 383 Udostępnianie informacji o hasłach ....................................................................... 388 Szczegóły działania algorytmu SRP ....................................................................... 390 Uruchamianie serwera JBoss z użyciem menedżera bezpieczeństwa Java 2 ................ 396 Zastosowanie protokołu SSL przy użyciu JSSE ........................................................... 399 Konfiguracja serwera JBoss działającego za firewallem .............................................. 403 Zabezpieczanie serwera JBoss ...................................................................................... 404 Usługa jmx-console.war ......................................................................................... 405 Usługa web-console.war ........................................................................................ 405 Usługa http-invoker.sar .......................................................................................... 405 Usługa jmx-invoker-adaptor-server.sar .................................................................. 405 Rozdział 9. Aplikacje sieciowe ........................................................................ 407 Usługa Tomcat ............................................................................................................. 407 Plik konfiguracyjny serwera Tomcat — server.xml ..................................................... 409 Element Connector ................................................................................................. 409 Element Engine ............................................................................................................ 412 Element Host ................................................................................................................ 412 Element DefaultContext ......................................................................................... 413 Element Logger ...................................................................................................... 413 Element Valve ........................................................................................................ 413 Korzystanie z protokołu SSL w zestawie JBoss/Tomcat .............................................. 414 Ustalenie kontekstu głównego aplikacji sieciowej ....................................................... 417 Konfiguracja hostów wirtualnych ................................................................................ 418 Dostarczanie treści statycznej ....................................................................................... 419 Połączenie serwerów Apache i Tomcat ........................................................................ 419 Praca w środowisku klastrowym .................................................................................. 420 Integracja z innymi kontenerami serwletów ................................................................. 421 Klasa AbstractWebContainer ................................................................................. 422 Rozdział 10. Inne usługi MBean ........................................................................ 431 Zarządzanie właściwościami systemowymi ................................................................. 431 Zarządzanie edytorem właściwości .............................................................................. 432 Wiązanie usług ............................................................................................................. 433 Planowanie zadań ......................................................................................................... 437 Komponent org.jboss.varia.scheduler.Scheduler .................................................... 438 Usługa Log4j ................................................................................................................ 441 Dynamiczne ładowanie klas RMI ................................................................................. 441 Rozdział 11. Mechanizm CMP .......................................................................... 443 Przykładowy program .................................................................................................. 443 Włączanie rejestracji informacji testowych ............................................................ 445 Uruchamianie przykładów ..................................................................................... 445 Struktura jbosscmp-jdbc ............................................................................................... 447 8 JBoss 4.0. Podręcznik administratora Komponenty encyjne .................................................................................................... 449 Odwzorowania encji .............................................................................................. 451 Pola CMP ..................................................................................................................... 456 Deklaracja pól CMP ............................................................................................... 456 Odwzorowania kolumn pól CMP ........................................................................... 457 Pola tylko do odczytu ............................................................................................. 460 Nadzór dostępu do encji ......................................................................................... 460 Zależne klasy wartości ........................................................................................... 462 Relacje zarządzane przez kontener ............................................................................... 466 Abstrakcyjne metody dostępu do pól cmr-field ..................................................... 467 Deklaracja relacji ................................................................................................... 467 Odwzorowanie relacji ............................................................................................ 469 Deklarowanie zapytań .................................................................................................. 476 Deklarowanie metod wyszukujących i wybierających ........................................... 477 Deklarowanie zapytań EJB-QL .............................................................................. 477 Przesłanianie odwzorowania EJB-QL na SQL ....................................................... 478 JBossQL ................................................................................................................. 480 DynamicQL ............................................................................................................ 481 DeclaredSQL .......................................................................................................... 482 Zapytania EJB-QL 2.1 oraz SQL92 ....................................................................... 487 Niestandardowe metody wyszukujące BMP .......................................................... 488 Ładowanie zoptymalizowane ....................................................................................... 488 Scenariusz ładowania ............................................................................................. 489 Grupy ładowania .................................................................................................... 490 Odczyt z wyprzedzeniem ....................................................................................... 491 Proces ładowania .......................................................................................................... 499 Opcje zatwierdzania ............................................................................................... 499 Proces ładownia aktywnego ................................................................................... 500 Proces odczytu z opóźnieniem ............................................................................... 501 Zbiory wyników odczytu z opóźnieniem ............................................................... 505 Transakcje .................................................................................................................... 505 Blokowanie optymistyczne .......................................................................................... 508 Polecenia encyjne oraz generacja klucza głównego ..................................................... 512 Istniejące polecenia encji ....................................................................................... 513 Domyślne ustawienia globalne serwera JBoss ............................................................. 515 Elementy ustawień globalnych ............................................................................... 517 Adaptacja źródła danych .............................................................................................. 519 Odwzorowania typów ............................................................................................ 519 Odwzorowania funkcji ........................................................................................... 523 Odwzorowania typów ............................................................................................ 523 Odwzorowania typów użytkownika ....................................................................... 524 Rozdział 12. Usługi sieciowe ............................................................................ 527 Punkty końcowe usług JAX-RPC ................................................................................. 527 Punkty końcowe komponentów Enterprise JavaBean .................................................. 533 Klienty usług sieciowych — klient JAX-RPC ............................................................. 536 Referencje usług ........................................................................................................... 538 Rozdział 13. Hibernate ..................................................................................... 543 MBean Hibernate ......................................................................................................... 543 Archiwa Hibernate ....................................................................................................... 545 Stosowanie obiektów Hibernate ................................................................................... 547 Stosowanie pliku HAR wewnątrz pliku EAR ............................................................... 548 Mechanizm wdrażania plików HAR ............................................................................ 549 Spis treści 9 Rozdział 14. Obsługa programowania aspektowego (AOP) ................................. 551 AOP w JBossie — usługi w stylu EJB dla zwyczajnych obiektów Javy ...................... 551 Dlaczego AOP? ............................................................................................................ 551 Podstawowe pojęcia związane z AOP .......................................................................... 553 Punkty łączeń i wywołania ..................................................................................... 553 Rady i aspekty ........................................................................................................ 553 Linie podziału ........................................................................................................ 554 Wstawienia oraz mieszanie .................................................................................... 557 Przygotowywanie aplikacji AOP na serwerze JBoss .................................................... 558 Kompilacja do postaci kodów bajtowych ............................................................... 558 Kompilacja adnotacji ............................................................................................. 558 Przygotowywanie AOP .......................................................................................... 559 Mechanizm wdrażania aplikacji AOP na serwerze JBoss ............................................ 560 Instalacja najnowszej wersji usługi jboss-aop.deployer ............................................. 561 Konfiguracja usługi AOP ....................................................................................... 561 Biblioteka gotowych aspektów .............................................................................. 562 Pakowanie i wdrażanie aplikacji AOP na serwerze JBoss ............................................ 563 Stosowanie gotowych aspektów ............................................................................. 565 Tworzenie własnych aspektów ............................................................................... 567 Pakowanie i wdrażanie niestandardowych aspektów ............................................. 568 Dodatek A Publiczna licencja GNU ................................................................. 573 Dodatek B Instalacja przykładów ................................................................... 579 Skorowidz ..................................................................................... 581 Rozdział 8. Bezpieczeństwo Zapewnienie odpowiedniego poziomu bezpieczeństwa jest jednym z fundamentalnych zadań aplikacji korporacyjnych. Musimy być w stanie precyzyjnie określić, kto może mieć dostęp do aplikacji i w jakim zakresie może z oferowanych przez system opera- cji korzystać. Specyfikacja J2EE definiuje prosty, korzystający z pojęcia roli model bezpieczeństwa dla komponentów sieciowych i EJB. Bezpieczeństwem serwera JBoss zajmuje się podsystem o nazwie JBossSX. Obsługuje on zarówno bazujący na rolach deklaratywny model bezpieczeństwa, jak i pozwala na integrację za pomocą pośred- nika ze specjalizowanym modułem bezpieczeństwa. Domyślna implementacja deklara- tywnego modelu bezpieczeństwa korzysta z technologii JAAS (ang. Java Authentication and Authorization Service). Warstwa pośrednika bezpieczeństwa pozwala na podłącze- nie dowolnego, specjalizowanego modułu obsługi kwestii bezpieczeństwa, którego nie jesteśmy w stanie zdefiniować za pomocą modelu deklaratywnego. Odbywa się to w sposób przezroczysty z punktu widzenia komponentów biznesowych. Zanim przej- dziemy do szczegółów implementacyjnych serwera JBoss, przypomnimy opisane w spe- cyfikacji modele bezpieczeństwa dotyczące serwletów i komponentów EJB oraz pod- stawy technologii JAAS. Deklaratywny model obsługi bezpieczeństwa J2EE Specyfikacja J2EE zaleca stosowanie deklaratywnego modelu obsługi bezpieczeństwa. Nosi on nazwę deklaratywnego, ponieważ odpowiednie role i uprawnienia definiujemy za pomocą standardowego deskryptora XML, informacji tych nie wstawiamy natomiast do wnętrza komponentów biznesowych. W ten sposób izolujemy kwestie bezpieczeń- stwa od kodu warstwy logiki biznesowej. Mechanizmy zapewniające bezpieczeństwo powinny być funkcją kontenera, w którym komponent jest wdrożony, nie zaś częścią samego komponentu. Wyobraźmy sobie komponent, który reprezentuje i zapewnia dostęp do konta bankowego. Sprawy związane z zapewnieniem bezpieczeństwa, ro- lami, prawami dostępu są zupełnie niezależne od logiki, jaką obiekt posiada. Zależą one przede wszystkim od specyfiki miejsca, w którym komponent jest wdrożony. 324 JBoss 4.0. Podręcznik administratora Zabezpieczenie aplikacji J2EE zależy od konfiguracji wymagań, a ta znajduje się w standardowych deskryptorach wdrożenia. Za dostęp do komponentów EJB odpowia- da plik deskryptora ejb-jar.xml. W przypadku komponentów warstwy sieciowej jest to deskryptor web.xml. W poniższych punktach omówimy znaczenie i sposób użycia pod- stawowych elementów konfigurujących sposób zabezpieczenia aplikacji. Referencje — element security-role-ref Zarówno komponentom EJB, jak też serwletom możemy przypisać jeden lub wiele ele- mentów security-role-ref (rysunek 8.1). Stosując ten element, deklarujemy, że kom- ponent korzysta z wartości role-name, traktując ją jako argument wywołania metody isCallerInRole(String). Za pomocą metody isCallerInRole komponent może spraw- dzić, czy obiekt wywołujący występuje w roli, która została zadeklarowana przez ele- ment security-role-ref/role-name. Wartość elementu role-name musi być związana z elementem security-role za pośrednictwem elementu role-link. Typowe wykorzy- stanie metody isCallerInRole polega na dokonaniu operacji weryfikacji, której nie da się przeprowadzić przy użyciu standardowych, związanych z rolą elementów method- -permissions. Rysunek 8.1. Struktura elementu security-role-ref Na listingu 8.1 prezentujemy sposób użycia elementu security-role-ref w pliku de- skryptora ejb-jar.xml. Listing 8.1. Fragment deskryptora ejb-jar.xml ilustrujący sposób użycia elementu security-role-ref !-- Przykładowy fragment deskryptora ejb-jar.xml -- ejb-jar enterprise-beans session ejb-name ASessionBean /ejb-name ... security-role-ref role-name TheRoleICheck /role-name role-link TheApplicationRole /role-link /security-role-ref /session /enterprise-beans ... /ejb-jar Rozdział 8. ♦ Bezpieczeństwo 325 Sposób wykorzystania elementu security-role-ref w pliku web.xml demonstruje li- sting 8.2 Listing 8.2. Fragment deskryptora web.xml ilustrujący sposób użycia elementu security-role-ref web-app servlet servlet-name AServlet /servlet-name ... security-role-ref role-name TheServletRole /role-name role-link TheApplicationRole /role-link /security-role-ref /servlet ... /web-app Tożsamość — element security-identity Za pomocą elementu security-identity istnieje możliwość określenia tożsamości, któ- rą posługuje się komponent EJB w chwilach, w których wywołuje metody innych kom- ponentów. Strukturę elementu security-identity pokazuje rysunek 8.2. Rysunek 8.2. Struktura elementu security-identity Tożsamość komponentu wywołującego metodę może być taka sama jak aktualna toż- samość klienta, który z tego komponentu korzysta. Możemy jednak posłużyć się inną rolą. Osoba konstruująca aplikację używa elementu security-identity wraz z elemen- tem podrzędnym use-caller-identity, chcąc wskazać, że aktualna tożsamość kom- ponentu EJB ma być propagowana w ramach wywołań metod innych komponentów. Opcja ta jest domyślna i zostanie zastosowana także w sytuacjach, w których element security-identity nie będzie w ogóle zdefiniowany. Rozwiązanie alternatywne polega na użyciu elementu run-as/role-name. Określamy w ten sposób inną rolę, wskazaną właśnie przez wartość elementu role-name, która będzie odpowiadała tożsamości wysyłanej podczas wywoływania metod innych kom- ponentów EJB. Zauważ, że nie zmieniamy w ten sposób tożsamości obiektu wywo- łującego, co pokazuje metoda EJBContext.getCallerPrincipal. Oznacza to natomiast, że rolom obiektu wywołującego przypisywana jest pojedyncza rola określona przez 326 JBoss 4.0. Podręcznik administratora wartość elementu run-as/role-name. Jednym z zastosowań elementu run-as jest unie- możliwienie zewnętrznym klientom dostępu do komponentów EJB, z których chcemy korzystać wyłącznie wewnątrz aplikacji. Osiągamy to na zasadzie przypisania elemen- tom method-permission komponentu EJB takich ról, mających zezwolenie na wywo- łanie metody, które nigdy nie zostaną przydzielone klientom zewnętrznym. Następnie komponentom EJB, które upoważnimy do wywoływania metod komponentów we- wnętrznych, przypisujemy tę rolę za pomocą elementu run-as/role-name. Listing 8.3 zawiera fragment deskryptora ejb-jar.xml, w którym użyty został element security- -identity. Listing 8.3. Fragment deskryptora ejb-jar.xml, który jest przykładem wykorzystania elementu security-identity !-- Przykładowy fragment deskryptora ejb-jar.xml -- ejb-jar enterprise-beans session ejb-name ASessionBean /ejb-name !-- ... -- security-identity use-caller-identity/ /security-identity /session session ejb-name RunAsBean /ejb-name !-- ... -- security-identity run-as description A private internal role /description role-name InternalRole /role-name /run-as /security-identity /session /enterprise-beans !-- ... -- /ejb-jar Role — element security-role Nazwa roli, do której odwołujemy się z poziomu elementów security-role-ref lub security-identity musi odpowiadać którejś z ról zdefiniowanych na poziomie apli- kacji. Osoba wdrażająca aplikację tworzy takie role logiczne za pomocą elementów security-role (rysunek 8.3). Wartość elementu role-name jest nazwą roli logicznej zdefiniowanej w ramach aplikacji. Przykładem może być rola Administrator, Architekt czy Sprzedawca. W specyfikacji J2EE wyraźnie podkreśla się, by nie zapominać o tym, że role wymie- nione w deskryptorze wdrożenia tworzą pewien logiczny widok aplikacji, który odpo- wiada przyjętej strategii zapewnienia jej bezpieczeństwa. Role zdefiniowane na pozio- mie deskryptora nie powinny być mylone z grupami, użytkownikami i uprawnieniami istniejącymi na poziomie systemu operacyjnego, w ramach którego pracuje serwer Rozdział 8. ♦ Bezpieczeństwo 327 Rysunek 8.3. Struktura elementu security-role aplikacyjny. Role z deskryptora wdrożenia to składniki aplikacji, taki jest też ich za- sięg. W przypadku aplikacji bankowej rolami takimi może być np. KierownikZmiany, Kasjer czy Klient. W serwerze JBoss elementy security-role używane są jedynie w celu przyporząd- kowania wartości security-role/role-name do roli logicznej, do której odwołuje się komponent. Role przypisywane użytkownikowi są dynamiczną funkcją menedżera bez- pieczeństwa aplikacji, co pokażemy podczas omawiania szczegółów implementacyjnych podsystemu JBossSX. JBoss nie wymaga definicji elementów security-role w celu określenia uprawnień zezwalających na wywoływanie metod. Jednakże tworzenie ele- mentów security-role jest ciągle zalecaną praktyką, gwarantującą przenośność apli- kacji pomiędzy różnymi serwerami aplikacyjnymi. Na listingu 8.4 widzimy element security-role użyty wewnątrz deskryptora ejb-jar.xml. Listing 8.4. Fragment deskryptora ejb-jar.xml, który jest przykładem wykorzystania elementu security-role !-- Przykładowy fragment deskryptora ejb-jar.xml -- ejb-jar !-- ... -- assembly-descriptor security-role description The single application role /description role-name TheApplicationRole /role-name /security-role /assembly-descriptor /ejb-jar Na listingu 8.5 widzimy element security-role użyty w deskryptorze web.xml. Listing 8.5. Fragment deskryptora web.xml, który jest przykładem wykorzystania elementu security-role !-- Przykładowy fragment deskryptora web.xml -- web-app !-- ... -- security-role description The single application role /description role-name TheApplicationRole /role-name /security-role /web-app 328 JBoss 4.0. Podręcznik administratora Uprawnienia wywoływania metod Osoba wdrażająca aplikację może za pomocą elementów method-permission wskazać role, które uprawnione są do wywoływania metod zawartych w domowych i zdalnych interfejsach komponentów EJB. Strukturę elementu method-permission widzimy na rysunku 8.4. Rysunek 8.4. Struktura elementu method-permission Każdy element method-permission posiada jeden lub wiele elementów zagnieżdżonych role-name wskazujących na role posiadające uprawnienia, które pozwalają wywołać zde- finiowane za pomocą elementów zagnieżdżonych method metody komponentu EJB (ry- sunek 8.5). Zamiast elementu role-name możemy zdefiniować element unchecked, de- klarując w ten sposób, że dostęp do metod określonych za pomocą elementów method mają wszyscy klienci, którzy zostali przez aplikację uwierzytelnieni. Istnieje także ele- ment exclude-list definiujący metody, których nie można wywołać. Metody kompo- nentu EJB, które nie zostały wymienione na liście metod dostępnych, traktowane są do- myślnie w taki sam sposób, jakby były wykluczone za pomocą elementu exclude-list. Rysunek 8.5. Struktura elementu method Rozdział 8. ♦ Bezpieczeństwo 329 Istnieją trzy dopuszczalne sposoby deklaracji elementu method: (cid:141) Sposób pierwszy stosujemy wówczas, gdy chcemy wskazać wszystkie metody interfejsu domowego i zdalnego danego komponentu EJB: method ejb-name EJBNAME /ejb-name method-name * /method-name /method (cid:141) Sposób drugi stosujemy, gdy chcemy wskazać metodę o podanej nazwie wchodzącą w skład interfejsu domowego lub zdalnego danego komponentu EJB: method ejb-name EJBNAME /ejb-name method-name METHOD /method-name /method Jeśli istnieje kilka przeciążonych metod o tej samej nazwie, to element dotyczy wszystkich. (cid:141) Trzeci sposób jest najbardziej dokładny. Pozwala wskazać konkretną metodę nawet wówczas, gdy jej nazwa jest przeciążona. method ejb-name EJBNAME /ejb-name method-name METHOD /method-name method-params method-param PARAMETER_1 /method-param !-- ... -- method-param PARAMETER_N /method-param /method-params /method Wskazana metoda musi być składnikiem interfejsu domowego lub zdalnego danego komponentu. Każdy element method-param posiada wartość, którą jest pełna nazwa typu kolejnego parametru metody. Opcjonalny element method-intf pozwala nam na dokonanie rozróżnienia w przypad- kach, gdy metody o identycznej sygnaturze wchodzą w skład zarówno interfejsu do- mowego, jak i zdalnego. Poniżej, na listingu 8.6, prezentujemy przykład użycia elementu method-permission. Listing 8.6. Fragment deskryptora ejb-jar.xml, który jest ilustracją użycia elementu method-permission ejb-jar assembly-descriptor method-permission description Role employee oraz temp-employee pozwalają na dostęp do metod komponentu EmployeeService /description role-name employee /role-name role-name temp-employee /role-name method ejb-name EmployeeService /ejb-name method-name * /method-name /method 330 JBoss 4.0. Podręcznik administratora /method-permission method-permission description Rola employee zezwala na wywołanie metod findByPrimaryKey, getEmployeeInfo oraz updateEmployeeInfo(String) komponentu /description role-name employee /role-name method ejb-name AardvarkPayroll /ejb-name method-name findByPrimaryKey /method-name /method method ejb-name AardvarkPayroll /ejb-name method-name getEmployeeInfo /method-name /method method ejb-name AardvarkPayroll /ejb-name method-name updateEmployeeInfo /method-name method-params method-param java.lang.String /method-param /method-params /method /method-permission method-permission description Rola admin pozwala na wywołanie dowolnej metody komponentu EmployeeServiceAdmin /description role-name admin /role-name method ejb-name EmployeeServiceAdmin /ejb-name method-name * /method-name /method /method-permission method-permission description Każdy uwierzytelniony użytkownik posiada prawo wywoływania dowolnej metody komponentu EmployeeServiceHelp /description unchecked/ method ejb-name EmployeeServiceHelp /ejb-name method-name * /method-name /method /method-permission exclude-list description Wdrożenie nie zezwala na wywołanie żadnej z metod fireTheCTO komponentu EmployeeFiring /description method ejb-name EmployeeFiring /ejb-name method-name fireTheCTO /method-name /method /exclude-list /assembly-descriptor /ejb-jar Rozdział 8. ♦ Bezpieczeństwo 331 Uprawnienia dotyczące aplikacji sieciowych W aplikacjach sieciowych zasady bezpieczeństwa i dostępu do zasobów również okre- ślane są przy użyciu ról. W tym przypadku jednak prawa dostępu do zasobów przypi- sujemy rolom, korzystając z wzorców URL-i. Wskazują one te treści, do których nie można się swobodnie odwoływać. Całość definiujemy w pliku deskryptora web.xml za pomocą elementu security-constraint (rysunek 8.6). Rysunek 8.6. Struktura elementu security-constraint Treść, która ma być chroniona, deklarujemy za pomocą jednego lub wielu elementów web-resource-collection. Każdy taki element zawierać może listę elementów podrzęd- nych url-pattern oraz listę elementów http-method. Wartość elementu url-pattern zawiera wzorzec URL. Dostępne będą tylko te zasoby wskazane w żądaniu, które od- powiadają wzorcowi. Wartość elementu http-method wskazuje natomiast, jakie rodzaje żądań HTTP będą obsługiwane. 332 JBoss 4.0. Podręcznik administratora Opcjonalny element user-data-constraint określa wymagania, jakie stawiamy war- stwie transportowej nadzorującej połączenie pomiędzy klientem a serwerem. Możemy wybrać wariant gwarantujący integralność przesyłanych danych (chroniący dane przed ich modyfikacją w czasie transmisji) bądź poufność danych (osoby trzecie nie będą w stanie odczytać przesyłanych danych). Elementu transport-guarantee określa spo- sób ochrony danych w czasie komunikacji na linii klient-serwer. Możemy wybrać jedną z trzech wartości tego elementu: NONE, INTEGRAL lub CONFIDENTIAL. Wybór pierwszej opcji, NONE, oznacza, że aplikacja nie wymaga żadnej ochrony przesyłanych danych. Opcję INTEGRAL stosujemy wówczas, gdy chcemy, by dane pomiędzy serwerem a klien- tem nie mogły być podczas transportu zmodyfikowane. Wartość CONFIDENTIAL zapewni z kolei, że transmitowane dane są chronione przed ewentualną obserwacją prowadzo- ną przez osoby trzecie. W większości przypadków wybór opcji INTEGRAL bądź CONFI- DENTIAL wiąże się z koniecznością włączenia obsługi bezpiecznego protokołu SSL. Opcjonalny element login-config służy do definicji metody uwierzytelnienia, dziedzi- ny, która ma być związana z aplikacją, oraz dodatkowych atrybutów, które są wymaga- ne w czasie uwierzytelnienia z użyciem formularza. Model zawartości tego elementu został przedstawiony na rysunku 8.7. Rysunek 8.7. Element login-config Element podrzędny auth-method określa mechanizm uwierzytelniania klientów apli- kacji sieciowej. Uzyskanie dostępu do dowolnego zasobu sieciowego, który jest chro- niony, musi być poprzedzone zakończoną powodzeniem operacją uwierzytelnienia. Ist- nieją cztery dopuszczalne wartości elementu auth-metod: BASIC, DIGEST, FORM i CLIENT- -CERT. Element podrzędny realm-name określa nazwę dziedziny używanej podczas sto- sowania metod BASIC (podstawowa metoda uwierzytelniania) oraz DIGEST (odmiana me- tody podstawowej z zastosowaniem funkcji jednokierunkowej). Element podrzędny form-login-config wskazuje stronę logowania i stronę błędu, które użyte zostaną w cza- sie użycia metody uwierzytelniania bazującej na formularzu. Jeśli natomiast wartość elementu auth-method jest inna niż FORM, to cały węzeł form-login-config jest igno- rowany. Na listingu 8.7 prezentujemy fragment deskryptora web.xml, w którym ustala- my, że wszystkie zasoby znajdujące się w katalogu /restricted wymagają, by użytkownik, Rozdział 8. ♦ Bezpieczeństwo 333 który chce się do nich odwoływać, miał przypisaną rolę AuthorizedUser. Nie ma na- tomiast żadnych wymagań odnośnie warstwy transportowej, a uwierzytelnienie doko- nywane jest przy użyciu metody podstawowej. Listing 8.7. Fragment deskryptora web.xml, który jest ilustracją użycia elementu security-constraint web-app !-- ... -- security-constraint web-resource-collection web-resource-name Secure Content /web-resource-name url-pattern /restricted/* /url-pattern /web-resource-collection auth-constraint role-name AuthorizedUser /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 The Restricted Zone /realm-name /login-config !-- ... -- security-role description Rola wymagana w celu uzyskania dostępu do zabezpieczonej treści /description role-name AuthorizedUser /role-name /security-role /web-app Obsługa bezpieczeństwa deklaratywnego w serwerze JBoss Przedstawione dotychczas elementy opisują kwestie bezpieczeństwa jedynie z per- spektywy aplikacji. Ich wartości definiują pewne logiczne role, które osoba zajmująca się wdrożeniem musi przenieść do środowiska, w którym aplikacja ma funkcjonować. Specyfikacja J2EE nie omawia tych zagadnień szczegółowo, wychodząc z założenia, że szczegóły zależą już od implementacji samego serwera aplikacyjnego. W JBossie związanie logicznych ról ze środowiskiem serwera wiąże się ze wskazaniem menedżera bezpieczeństwa, który jest zgodny z modelem bezpieczeństwa J2EE. Odbywa się to za pomocą specjalnego deskryptora wdrożenia. Więcej szczegółów na temat konfigu- rowania warstwy bezpieczeństwa omawiamy w podrozdziale „Model bezpieczeństwa serwera JBoss”. 334 JBoss 4.0. Podręcznik administratora Wprowadzenie do JAAS Podsystem JBossSX bazuje na API JAAS (ang. Java Authentication and Aauthorization Service). Zrozumienie działania implementacji JBossSX wymaga znajomości podstaw JAAS API. Dlatego zaczniemy od krótkiego wykładu na temat JAAS, który stanowi przygotowanie do dalszej dyskusji na temat JBossSX. Czym jest JAAS? JAAS API 1.0 to zestaw pakietów i klas, które zaprojektowano z myślą o operacjach uwierzytelniania i autoryzacji. Stanowią one napisaną w języku Java implementację standardowego, wymiennego modułu uwierzytelniającego PAM (ang. Pluggable Au- thentication Module). Rozwiązanie to jest zgodne i rozszerza standardową architekturę bezpieczeństwa oraz zawarte tam mechanizmy uwierzytelniania użytkowników. Mo- duł JAAS był początkowo dostarczany w postaci rozszerzenia dla JDK 1.3. Począwszy od wersji 1.4, jest już standardowym składnikiem JDK. A ponieważ JBossSX używa wyłącznie tych funkcji JAAS, które wiążą się z uwierzytelnianiem, to od tej chwili kon- centrować się będziemy jedynie na zagadnieniach z tym związanych. Uwierzytelnianie w JAAS odbywa się na zasadzie dołączenia odpowiedniego modułu. Pozwala to aplikacjom Javy pozostawać niezależnymi od aktualnie stosowanej techno- logii i mechanizmów uwierzytelniania. Dzięki temu JBossSX może pracować w oparciu o różne infrastruktury bezpieczeństwa. Integracja z określoną infrastrukturą bezpie- czeństwa może odbywać się bez konieczności dokonywania zmian w implementacji menedżera bezpieczeństwa JBossSX. Jedynym elementem, który wymaga modyfikacji, jest konfiguracja stosu uwierzytelniania używanego przez JAAS. Podstawowe klasy JAAS Podstawowe klasy wchodzące w skład JAAS dzielą się na trzy kategorie: klasy ogólne, klasy odpowiadające za uwierzytelnianie i klasy odpowiadające za autoryzację. Poniżej prezentujemy jedynie klasy kategorii pierwszej i drugiej. To one implementują funk- cjonalność modułu JBossSX, którą opisujemy w rozdziale. Klasy ogólne: (cid:141) Subject (javax.security.auth.Subject) (cid:141) Principal (java.security.Principal) Klasy związane z uwierzytelnianiem: (cid:141) Callback (javax.security.auth.callback.Callback) (cid:141) CallbackHandler (javax.security.auth.callback.CallbackHandler) (cid:141) Configuration (javax.security.auth.login.Configuration) (cid:141) LoginContext (javax.security.auth.login.LoginContext) (cid:141) LoginModule (javax.security.auth.spi.LoginModule) Rozdział 8. ♦ Bezpieczeństwo 335 Klasy Subject i Principal Zanim nastąpi autoryzacja, zezwalająca na dostęp do zasobów, aplikacja musi najpierw uwierzytelnić źródło, z którego pochodzi żądanie. W JAAS zdefiniowane zostało po- jęcie podmiotu (ang. subject), który reprezentuje źródło żądania. Odpowiadająca mu klasa Subject jest kluczowym elementem JAAS. Obiekt Subject zawiera informacje o pojedynczej encji, którą może być osoba lub usługa. Informacje te obejmują tożsa- mość encji, a także jej publiczne i prywatne dane uwierzytelniające. JAAS API używa istniejącego już w Javie interfejsu java.security.Principal, który służy do reprezen- towania tożsamości. Obiekt tego typu przechowuje po prostu nazwę. W trakcie procesu uwierzytelnienia podmiotowi przypisuje się tożsamość (klasa Princi- pal) lub tożsamości, ponieważ może on mieć ich kilka. Na przykład jedna osoba może posiadać obiekt Principal odpowiadający jej nazwisku (np. Jan Kowalski), numerowi identyfikacyjnemu (71061421421) czy też nazwie użytkownika, jaką osoba się posłu- guje (jank). Wszystkie te dane pozwalają nam skutecznie odróżniać od siebie poszcze- gólne obiekty typu Subject. Istnieją dwie metody, które zwracają obiekty typu Principal związane z obiektem Subject: public Set getPrincipals() {...} public Set getPrincipals(Class c) {...} Pierwsza z nich zwraca wszystkie tożsamości podmiotu. Metoda druga zwraca nato- miast tylko te obiekty Principal, które są instancjami typu c lub po c dziedziczą. Gdy obiektów takich nie ma, zwracany jest zbiór (Set) pusty. Zwróć uwagę, że interfejs java.security.acl.Group jest rozszerzeniem interfejsu java.security.Principal. Dzięki temu, stosując odpowiednie typy, możemy logicznie grupować obiekty reprezentujące tożsamość. Uwierzytelnienie podmiotu Uwierzytelnienie podmiotu wiąże się z operacją logowania do JAAS. Procedura logo- wania składa się z następujących etapów: 1. Aplikacja tworzy instancję typu LoginContext, przekazując nazwę konfiguracji logowania oraz obiekt implementujący interfejs CallbackHandler, któremu zostanie przekazana tablica obiektów typu Callback, ich zestaw odpowiada konfiguracji modułu LoginModule. 2. Obiekt LoginContext na podstawie obiektu Configuration ustala listę wszystkich modułów LoginModule, które zgodnie z konfiguracją należy załadować. Przy braku wskazanej konfiguracji domyślnie użyta zostanie konfiguracja o nazwie other. 3. Aplikacja wywołuje metodę LoginContext.login. 4. Metoda login odwołuje się kolejno do wszystkich załadowanych modułów typu LoginModule. Każdy z nich dokonuje próby uwierzytelnienia podmiotu, wywołując metodę handle odpowiedniego obiektu CallbackHandler, która zwraca informacje wymagane w procesie uwierzytelnienia. Parametrem metody handle jest tablica obiektów typu Callback. Jeśli operacja zakończy się sukcesem, LoginModule przypisują podmiotowi odpowiednią tożsamość i dane uwierzytelniające. 336 JBoss 4.0. Podręcznik administratora 5. Obiekt LoginContext zwraca aplikacji status operacji uwierzytelnienia. Sukcesowi odpowiada prawidłowe zakończenie metody login. Nieudane logowanie sygnalizowane jest
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

JBoss 4.0. Podręcznik administratora
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: