Java Servlets – autorizovaný prístup k aplikácii 5.
V tomto článku ukončíme rozprávanie o realmoch ako o viac menej špecifickej črte servera Tomcat, súvisiacej s autorizovaným prístupom k aplikáciám. Prebrali sme tri základné typy (MemoryRealm, JDBCRealm a DataSourceRealm), čaká nás ešte JNDIRealm a JAASRealm. Obidva sú už vyspelejšie typy realmov, lepšie využívajúce možnosti dnešných systémov.
JNDIRealm
JNDIRealm je najzložitejším typom realmu, ktorý informácie o užívateľoch a ich roliach získava z LDAP adresárového servera. Na pripojenie k serveru sa využíva LDAP URL, ktoré obvykle obsahuje doménu servera, na ktorý sa potrebujeme pripojiť. Voliteľne ešte obsahuje číslo portu a takzvaný rozlišovací názov menného priestoru. Pri zisťovaní užívateľských informácií a priradených rolí sa musí samotný realm autentifikovať. K tomu účelu slúžia dva atribúty connectionName a connectionPassword. Ak tieto atribúty neposkytnete, realm sa pokúsi o anonymné prihlásenie.
Každý užívateľ, ktorý sa potrebuje autentifikovať, musí byť reprezentovaný v adresári samostatným záznamom. Tento záznam musí mať atribúty obsahujúce prihlasovacie meno užívateľa a heslo. Čo sa týka jednotlivých rolí, tak tie môžu byť súčasťou užívateľského záznamu alebo môžu byť evidované samostatne, ako záznamy v adresári s atribútom predstavujúcim názov role a s atribútom obsahujúcim priradené užívateľské mená.
Aby ste mohli využívať JNDIRealm v spojitosti s LDAP, je nutné nakopírovať do adresára server/lib alebo do common/lib JNDI driver, napríklad ldap.jar. A zároveň vložiť do server.xml element <Realm> s nasledujúcimi atribútmi. Niektoré sú povinné (zvýraznené) a ostatné sú nepovinné.
- className
– plne kvalifikované meno triedy tohto realmu, konkrétne org.apache.catalina.realm.JNDIRealm. - connectionName
– prihlasovacie meno potrebné na pripojenie k LDAP. - connectionPassword
– prihlasovacie heslo potrebné na pripojenie k LDAP. - connectionURL
– URL poskytnuté JNDI driveru na pripojenie k LDAP. - contextFactory
– plne kvalifikované meno triedy JNDI sprostredkovateľa. Štandardne sa použije com.sun.jndi.ldap.LdapCtxFactory. - roleBase
– názov úrovne, na ktorej sa má začať prehľadávanie jednotlivých rolí. Ak ho nezadáte, začne sa od najvyššej úrovne. - roleName
– názov atribútu obsahujúceho názvy rolí. - userBase
– názov úrovne, od ktorej začne prehľadávanie užívateľských záznamov. - userPassword
– názov atribútu obsahujúci užívateľovo heslo.
Element <Realm> obsahuje ešte ďalšie menej podstatné atribúty, ktorých použitie závisí od konkrétneho LDAP servera. Na otestovanie svojich možností môžete využiť napríklad OpenLDAP server.
Na záver ešte uvediem príklad nastavenia JNDIRealmu:
<Realm
className=“org.apache.catalina.realm.JNDIRealm“
connectionName=“cn=Manager,dc=mycompany,dc=com“
connectionPassword=“xxxx“
connectionURL=“ldap://localhost:389″
roleBase=“ou=groups,dc=mycompany,dc=com“
roleName=“cn“
userBase=“ou=people,dc=mycompany,dc=com“ />
JAASRealm
JAASRealm je najnovšou implementáciou realmov na serveri Tomcat od verzie 5.0. Je založený na využívaní technológie JAAS (Java Authentication & Authorization Service). Tento realm dáva vývojárovi najväčšiu voľnosť v tom, že môže doň implementovať akúkoľvek bezpečnostnú politiku podľa svojich potrieb a požiadaviek kladených na aplikáciu.
Pri tejto implementácii sa často využíva JAAS login modul javax.security.auth.spi.LoginModule a hlavná trieda javax.security.Principal, vďaka ktorým môžete vyvinúť vlastný bezpečnostný mechanizmus alebo využiť existujúce mechanizmy tretích strán.
Určitou nevýhodou tohto realmu hlavne pri porovnaní s ostatnými je to, že vyžaduje oveľa viac programátorskej práce. Na druhej strane však vami vyvinuté triedy môžete využiť aj v iných vašich aplikáciách. Alebo môžete využiť už existujúce triedy vašich kolegov. Pri použití tohto realmu musíte sami vyvinúť a použiť triedy zodpovedné za udržiavanie informácií o užívateľoch a ich roliach a tiež triedu odvodenú od triedy LoginModul.
I napriek tomu, že to nie je nutné, respektíve JAAS to neprikazuje, mali by ste vytvoriť triedy, ktoré dokážu rozlišovať medzi užívateľom a rolou, založenou na javax.security.Principal. Tieto triedy treba po skompilovaní umiestniť do classpath aby ich Tomcat dokázal nájsť. Potom je nutné vytvoriť konfiguračný súbor jaas.config a povedať JVM, kde sa tento súbor nachádza, napríklad definovaním systémovej premennej:
JAVA_OPTS =
-D java.security.auth.login.config ==
$CATALINA_HOME/conf/jaas.config
// všetko do jedného riadku
Ako napísať tento konfiguračný súbor nájdete v odkazoch uvedených na konci článku. Posledným krokom je už len editácia server.xml a web.xml, podľa štandardných pravidiel. Element <Realm> má tieto atribúty:
- className
– klasicky plne kvalifikované meno triedy realmu, v tomto prípade org.apache.catalina.realm.JAASRealm. - appName
– názov realmu, ako ste ho zadali v login konfiguračnom súbore. - userClassNames
– názvy tried oddelené čiarkou zodpovedné za správu užívateľov. - roleClassNames
– názvy tried oddelené čiarkou zodpovedné za správu užívateľských rolí.
Na záver ešte krátka ukážka nakonfigurovaného realmu:
<Realm className=“org.apache.catalina.realm.JAASRealm“
appName=“MyRealm“
userClassNames=“com.company.realm.MyUser“
roleClassNames=“com.company.realm.MyRole“
debug=“99″/>
Touto časťou by sme otázku zabezpečenia aplikácie ukončili, na budúce sa vrhneme na niečo iné. Pri tvorbe tohto a predchádzajúceho článku som čerpal informácie hlavne z nasledujúcich zdrojov:
- Jakarta Apache Projekt – realms – stránka venovaná konfigurácii a popisu jednotlivých typov realmov, použiteľných na serveri Tomcat 5.x.
- JAAS Login Configuration File – how to – na tejto stránke nájdete užitočné informácie o obsahu konfiguračného súboru JAAS.
- LoginModule Developer’s Guide – tu nájdete veľké množstvo informácií o tvorbe login modulu pre JAASRealm.
- JAAS Authentication Tutorial – stránka obsahuje všeobecné i konkrétne informácie o tvorbe backround tried využiteľných s JAAS.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Proč je důležité tvořit obsah na váš web?
29. srpna 2024 -
Členská sekce: 4 důvody proč ji mít na svém webu
12. března 2024 -
Zabezpečení e-mailů: Jak můžete chránit vaši firemní komunikaci
13. prosince 2023
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024