150 likes | 276 Views
LDAP - WS. Martin Orend áč. Klientské Požiadavky. Implementovať server pre komunikáciu s dan ým LDAP serverom. Implementovať v zorov ého klienta pre komunikáciu s vyvíjaným serverom. Použitie technológii JNDI, Jax-RS. Čo som dosiahol.
E N D
LDAP - WS Martin Orendáč
Klientské Požiadavky • Implementovať server pre komunikáciu s daným LDAP serverom. • Implementovať vzorového klienta pre komunikáciu s vyvíjaným serverom. • Použitie technológii JNDI, Jax-RS.
Čo som dosiahol • Môj server prevádza operácie delete, insert, modify a search nad objektmi typu Person v danej LDAP databáze, usporiadaných v podstrome s vopred danou štruktúrou. • Implementoval som klientskú aplikáciu pre môj server.
Architektúra Rozhrania LDAP Server Môj Klient JNDI HTTP Jax-RS Webservice na Servri Môj Server
Výhody takejto architektúry Načo potrebujeme prechodný server medzi klientom? • Klient môže byť hocičo, takto sa návrh klientskej aplikácie podstatne zjednodušuje. Stačí poznať http protokol, ktorý je dnes veľmi rozšírený. O všetko ostatné sa stará server.
Priblíženie použitých technológií - LDAP • LDAP je objektová databáza ktorá má tvar stromu, kde základanou informačnou jednotkou je "objekt" (entry), čo je vlastne uzol daného stromu - databázy. Objekt je množina atribútov a je jednoznačne pomenovaný tzv. DN (Distinguished Name). Každý atribút objektu ma typ a jednu alebo viac hodnôt.
Organizácia objektov v (mojej) LDAP databáze DN každého objektu typu person v mojejdatabáze je jednoznačne určené atribútmi Organisation, Location a cn ktoré je rovné zreťazeniu (meno+ “ ” + Priezvisko). Usporiadanie v strome potom vyzerá: DC=maxCrc, DC=com Ou=UPJS Ou=STUBA Ou=Tuke … … l=KE l=BA cn=Janko Hraško … DN osoby Janko Hraško sa teda rovná DN: cn=Janko Hraško, l=KE, Ou=STUBA, DC=maxCrc, DC=com
Priblíženie použitých technológií - JNDI Práca s LDAP databázou vyžaduje zakaždým keď chceme previesť nejakú operáciu vytvoriť LDIF súbor a poslať ho LDAP serveru, čo je trochu nepohodlné. Zjednodušením je technológia JNDI - Java Naming and Directory Interface, API poskytujúce menné a súborové operácie aj nad LDAP databázou pre java aplikácie.
Priblíženie použitých technológií - JNDI JNDI architektúra (zo stránky Oraclu): JNDI je pre objektové databázy teda to isté čo JDBC pre relačné.
Priblíženie použitých technológií - Jax-RS Jax-RS slúži na budovanie odľahčéných (REST) web-servisov. Web service je klient-server aplikácia používajúca http protokol na komunikáciu a poskytujúce štandardné prostriedky na spoluprácu softvéru bežiaceho na rôznych platformách a frameworkoch (definicia podĺa w3c) REST architektúra vyžaduje mať na servri Java triedu Resource, v ktorej sú pomocou špeciálnych notácii (hlavné z nich sú @Get, @Put, @Post, @Delete) označené metódy, ktoré sa volajú po zavolaní príslušnej http požiadavky.
Priblíženie použitých technológií - Jax-RS Na komunikáciu so serverom ktorý má triedu resource teda stačí poznať URL tejto triedy, štandardne (URL servera)/Resources/(Názov Resource triedy) Odpoveď, ktorú server vracia/zasiela klientovi môže byť buď typu plain text, XML, Mime media type alebo niečo iné.
Ako prebieha komunikácia - od klienta k LDAPu Na začiatku teda klient posiela http požiadavku na server. Skúsim popísať priebeh spracovania požiadavky Get keďže pri nej očakáva klient aj odpoveď. Pri posielaní Get požiadavky môžeme špecifikovať aj URL link odkiaľ chceme stiahnuť informácie. Keďže klient môže na vyhľadávania použiť aj filter, v URL linku je uvedené Querry kde sa nastavia atribúty filtrovania. Príklad požiadavky : Get (URL Resource Triedy)/?name=Janko&surname=Hrasko
Ako prebieha komunikácia - od klienta k LDAPu Server dostal požiadavku get, volá metódu snotáciou @Get. Tá dokáže z Querry v URL linku dostať hodnoty jednotlivých atribútov. Vytvorí objekt typu Person s danými atribútmi a posúva ho ďalej triede LDAPService, ktorá pomocou JNDI sformuluje požiadavku na LDAP server s atribútmi podľa ktorých má vyhľadávať, a odpoveď ktorú dostane spracuje a preposiela naspäť metóde Resource triedy. Odpoveď ktorú dostáva klient je jeden String v tvare "Meno : " + name + ", Priezvisko : " + surname + ", Organizacia : " + ou +", Lokacia : " +", Popis : " + desc +", Adresa : " + post + ", Telefon : " + tel + ", Titul : " + title + System.getProperty("line.separator"); Je to teda list vyhovujúcich osôb oddelených separátorom riadkov. Klient si už potom dokáže z tohto zrekonštruovať zoznam objektov Person.
Možné rozšírenia Projekt by sa ešte dal vylepšiť týmito rozšíreniami: • Zaviesť špeciálne odpovede servra pre klienta (Napr o tom že je server offline, alebo že požiadavka je nereálna) • Zaviesť autentifikáciu (Teraz má k dátam prístup každý a môže s nimy dokonca manipulovať). • Umožniť konfiguráciu servra aj klienta (napr aby bolo možné nastaviť na aký server sa má klient napojiť, teraz je pevno viazaný na jeden server)