Za´padoˇceska´ univerzita v Plzni Fakulta aplikovany´ch vˇed Katedra informatiky a vy´poˇcetn´ı techniky
Bakal´ aˇ rsk´ a pr´ ace N´ astroj pro integraci uˇ zivatelsk´ ych u ´ˇ ct˚ u
Plzeˇ n 2014
David Jan´ıˇcek
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem bakal´aˇrskou pr´aci vypracoval samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u. V Plzni dne 8. kvˇetna 2014 David Jan´ıˇcek
Abstrakt C´ıle bakal´aˇrsk´e pr´ace jsou eliminace redundantn´ıho zad´av´an´ı dat o uˇzivatel´ıch, optimalizace spr´avy integrovan´ ych aplikac´ı a minimalizace rizika vzniku chyby zapˇr´ıˇcinˇen´e lidsk´ ym faktorem, to vˇse v IT prostˇred´ı z´akazn´ıka. Tˇechto c´ıl˚ u bude dosaˇzeno pomoc´ı konsolidace uˇzivatelsk´ ych dat v jednotliv´ ych aplikac´ıch a automatizac´ı spr´avy uˇzivatelsk´ ych u ´ˇct˚ u, tj. zakl´ad´an´ı, aktualizace a ruˇsen´ı uˇzivatelsk´ ych u ´ˇct˚ u v jednotliv´ ych aplikac´ıch. Bude vytvoˇren softwarov´ y n´astroj, jehoˇz implementace zajist´ı komunikaci aplikac´ı prostˇrednictv´ım definovan´ ych datov´ ych rozhran´ı a transformaci dat do poˇzadovan´ ych form´at˚ u. Konsolidovan´a uˇzivatelsk´a data budou uloˇzena v datab´azi integraˇcn´ıho SW a bude moˇzn´e je spravovat prostˇrednictv´ım webov´eho rozhran´ı. V´ yrazn´ ym pˇr´ınosem je, ˇze konsolidace bude moˇzn´a vytvoˇren´ım nov´eho rozhran´ı na integraˇcn´ım softwaru, ˇc´ımˇz je zajiˇstˇena dlouhodob´a udrˇzitelnost spravovan´eho prostˇred´ı.
Abstract The aim of this bachelor thesis is the elemination of redundant user data insertion, the management optimalization of the particular applications and the risk minimalization of errors made by human, all of it in the customers’s environment. These goals will be achieved by the consolidation of user data stored in the applications and by the automatization of user accounts lifecycle in the applications, specifically creation, update and deletion of the accounts in the particular applications. An software tool will be created and it’s implementation will maintain communication among the applications through the defined data interfaces and will transform data to the required formats. The consolidated user data will be stored in the database of the implemented software and there will be a possibility to manage data through a web interface. The main contribution will be the consolidation through the formation of the new interface in the software tool which will provide longterm maintainability of the managed environment.
Obsah ´ 1 Uvod 1.1 Motivace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 2
2 Anal´ yza prostˇ red´ı 2.1 Integrovan´e aplikace . . 2.1.1 Bakal´aˇri . . . . . 2.1.2 Active Directory 2.1.3 Moodle . . . . . 2.1.4 YSoft SafeQ . . . 2.1.5 Dalˇs´ı aplikace . . 2.2 St´avaj´ıc´ı ˇreˇsen´ı . . . . .
3 3 3 5 6 6 7 7
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
3 N´ avrh ˇ reˇ sen´ı 4 N´ astroje pro implementaci 4.1 Aplikaˇcn´ı vrstva . . . . . . 4.1.1 Spring Framework 4.1.2 Spring Security . . 4.1.3 Spring LDAP . . . 4.2 Datov´a vrstva . . . . . . . 4.2.1 Hibernate ORM . . 4.2.2 MySQL . . . . . . 4.2.3 Jasypt . . . . . . . 4.3 Webov´a vrstva . . . . . . 4.3.1 Twitter Bootstrap 4.3.2 Freemarker . . . . 4.3.3 Sitemesh . . . . . . 4.4 Serverov´a vrstva . . . . . . 4.4.1 Jetty . . . . . . . . 4.4.2 Apache Tomcat . . 4.5 Maven . . . . . . . . . . .
9
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
12 12 12 13 14 14 14 15 15 15 15 16 16 17 17 17 17
4.6
Powershell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5 Implementace n´ astroje 5.1 V´ yvoj aplikace . . . . 5.1.1 Datov´ y model 5.1.2 Z´ısk´an´ı dat . 5.1.3 Dalˇs´ı v´ yvoj . 5.2 Testov´an´ı . . . . . . 5.3 Produkˇcn´ı verze . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
6 Integrace aplikac´ı 6.1 Integrace - Bakal´aˇri . . . . . 6.2 Integrace - Active Directory 6.3 Integrace - Moodle . . . . . 6.4 Integrace - YSoft SafeQ . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
19 19 19 21 22 24 24
. . . .
25 25 27 32 33
7 Zhodnocen´ı 35 7.1 V´ ysledky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 7.2 Budouc´ı v´ yvoj . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 8 Z´ avˇ er
38
A Kompletn´ı datov´ y model
42
B Integrace Moodle s AD
43
C Obsah pˇ riloˇ zen´ eho CD
44
Seznam obr´ azk˚ u 3.1
N´avrh datov´eho toku . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.1
MVC architektura
5.1 5.2 5.3
Graf historie poˇctu zmˇen ve verzovac´ım syst´emu (z aplikace Gitblit) . 19 Datov´ y model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Screenshot webov´eho rozhran´ı aplikace . . . . . . . . . . . . . . . . . 23
6.1
Nastaven´ı propojen´ı SafeQ - LDAP, pˇrevzato z [10] . . . . . . . . . . 34
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Seznam tabulek 3.1
Pˇrehled integrovan´ ych aplikac´ı . . . . . . . . . . . . . . . . . . . . . .
9
7.1
Synchronizovan´e u ´ˇcty (stav k 4.5.2014) . . . . . . . . . . . . . . . . . 37
´ 1 | Uvod C´ılem t´eto bakal´aˇrsk´e pr´ace je navrhnout, implementovat, otestovat a nasadit produkˇcn´ı verzi n´astroje pro integraci uˇzivatelsk´ ych u ´ˇct˚ u, kter´ y se bude starat o synchronizaci uˇzivatelsk´ ych dat mezi vybran´ ymi aplikacemi u konkr´etn´ıho z´akazn´ıka. N´astroj by mˇel b´ yt pˇrizp˚ usoben speci´aln´ım potˇreb´am z´akazn´ıka, na druhou stranu by mˇela b´ yt znateln´a snaha navrhnout strukturu programu obecnˇe a nez´avisle na specifick´em prostˇred´ı odbˇeratele, aby se dal snadno a rychle aplikovat jinde. Z toho plyne, ˇze n´astroj nen´ı povaˇzov´an za jednor´azov´ y a v budoucnu je pˇredpokl´ad´ano jeho nasazen´ı i u jin´ ych z´akazn´ık˚ u. Bakal´aˇrsk´a pr´ace byla vytv´aˇrena pro extern´ı firmu KOBOZ SERVICE, s.r.o.1 , kter´a realizuje nasazen´ı integraˇcn´ıho n´astroje jako jednu z ˇca´st´ı sv´eho projektu pro Vyˇsˇs´ı odbornou ˇskolu a Stˇredn´ı ˇskolu veterin´arn´ı, zemˇedˇelskou a zdravotnickou v Tˇreb´ıˇci2 (d´ale jen ˇskola, z´akazn´ık). C´ılem bakal´aˇrsk´e pr´ace bylo u ´spˇeˇsnˇe prov´est tuto ˇca´st projektu. Pˇred samotn´ ym n´avrhem n´astroje je nejprve nutn´e se detailnˇe sezn´amit s aktu´aln´ım ˇreˇsen´ım u z´akazn´ıka, definovat a prozkoumat aplikace u ´ˇcastn´ıc´ı se integrace, porozumˇet st´avaj´ıc´ımu procesu toku dat a identifikovat jeho chyby a probl´emy. Postup anal´ yzy je pops´an v kapitole 2 Anal´ yza prostˇred´ı. Po anal´ yze prostˇred´ı z´akazn´ıka jsou definov´any algoritmy v´ ymˇeny dat a navrhnut nov´ y proces fungov´an´ı integrace aplikac´ı a synchronizace dat s vyuˇzit´ım vyv´ıjen´eho projektu v kapitole 3 N´avrh ˇreˇsen´ı. N´asleduje f´aze samotn´e implementace aplikace, to znamen´a popis pouˇzit´ ych n´astroj˚ u pro v´ yvoj, jak implementace prob´ıhala a hlavnˇe jak byly aplikace definovan´e v anal´ yze integrov´any a napojeny na cel´ y proces. Tˇemto z´aleˇzitostem se vˇenuj´ı kapitoly 4 N´astroje pro implementaci, 5 F´aze implementace a 6 Integrace aplikac´ı. Nakonec je shrnut pˇr´ınos cel´eho projektu v kapitole 7 Zhodnocen´ı. 1 2
domovsk´ a adresa http://koboz.cz/ v´ıce informac´ı o ˇskole na adrese http://www.szstrebic.cz/
1
´ 1. UVOD
1.1
1.1 Motivace
Motivace
Hlavn´ı motivac´ı pro realizaci t´eto bakal´aˇrsk´e pr´ace je pr´avˇe moˇznost spolupr´ace s uvedenou extern´ı firmou, protoˇze se nejedn´a o teoretick´ y ˇskoln´ı projekt, ale o v´ yvoj skuteˇcn´e pouˇziteln´e aplikace, kter´a bude fungovat v re´aln´em prostˇred´ı a mˇela by pˇrin´est pro z´akazn´ıka znaˇcn´e ulehˇcen´ı a zlepˇsen´ı procesu zad´av´an´ı uˇzivatelsk´ ych dat. S probl´emy tohoto typu se nesetk´av´a pouze tento konkr´etn´ı z´akazn´ık, proto by mohly b´ yt zaj´ımav´e vyhl´ıdky budouc´ı moˇzn´e expanze s projektem i do nˇekter´ ych jin´ ych ˇskolsk´ ych prostˇred´ı.
2
2 | Anal´ yza prostˇ red´ı Analyzov´an´ı souˇcasn´eho stavu synchronizace dat, softwarov´ y a datov´ y audit se uskuteˇcnil pˇr´ımo v prostˇred´ı z´akazn´ıka, kter´ ym je Vyˇsˇs´ı odborn´a ˇskola a Stˇredn´ı ˇskola veterin´arn´ı, zemˇedˇelsk´a a zdravotnick´a Tˇreb´ıˇc, ve stˇredu 12. ˇcervna 2013.
2.1
Integrovan´ e aplikace
Proces definov´an´ı integrovan´ ych aplikac´ı prob´ıhal v souˇcinnosti s IT pracovn´ıkem tˇreb´ıˇcsk´e ˇskoly, a to na z´akladˇe smlouvy mezi firmou KOBOZ SERVICE, s.r.o. a ˇskolou, kde uˇz jsou vyjmenov´any aplikace, jeˇz maj´ı b´ yt souˇc´ast´ı integrace. Ke kaˇzd´e aplikaci bylo potˇreba z´ıskat pˇr´ıstupov´e u ´daje, vyuˇz´ıvan´e pot´e i pro integraˇcn´ı n´astroj, specifikovat obsaˇzen´a data a jejich souvislost s daty v jin´ ych softwarech. Z´aroveˇ n bylo potˇreba zjistit, jestli m´a dan´a aplikace slouˇzit jako producent dat, tzn. data jsou aktu´aln´ı a pouˇziteln´a v ostatn´ıch syst´emech, nebo jako konzument dat, tj. data jsou kopi´ı dat z jin´eho zdroje a nepˇrin´aˇsej´ı ˇza´dn´e nov´e informace. Uveden´ y IT pracovn´ık byl pro tento proces nepostradatelnou souˇca´st´ı, nikdo jin´ y nemˇel na ˇskole v dan´em okamˇziku lepˇs´ı pˇrehled o vyuˇz´ıvan´ ych softwarech a stavu dat. Z anal´ yzy vyplynuly n´asleduj´ıc´ı aplikace.
2.1.1
Bakal´ aˇ ri
Software Bakal´aˇri je urˇcen pro ˇskoln´ı administrativu, pro u ´ˇcely t´eto pr´ace pak zvl´aˇstˇe jeho sekce Evidence ˇza´k˚ u a zamˇestnanc˚ u. Webov´e str´anky aplikace uv´adˇej´ı, ˇze zpracov´av´a vedle osobn´ıch u ´daj˚ u zejm´ena klasifikaci ˇza´k˚ u. Propracovan´ y syst´em z´apisu a u ´ˇcinn´ ych kontrol dovoluje udrˇzovat data v lepˇs´ım stavu neˇz klasick´a ruˇcn´ı evidence. Z karty ˇza´ka pak lze vyˇc´ıst veˇsker´e potˇrebn´e informace - osobn´ı u ´daje, u ´daje o rodiˇc´ıch, kompletn´ı klasifikaci za celou ˇskoln´ı doch´azku a podobnˇe.[3]
3
´ ˇ ´I 2. ANALYZA PROSTRED
2.1 Integrovan´e aplikace
Kromˇe osobn´ıch u ´daj˚ u ˇza´k˚ u a klasifikace software obsahuje zaˇrazen´ı ˇza´k˚ u do tˇr´ıd a jednotliv´ ych skupin tˇr´ıdy (napˇr. rozdˇelen´ı chlapci/dˇevˇcata) s vazbou na tˇr´ıdn´ı uˇcitele, a v neposledn´ı ˇradˇe tak´e osobn´ı u ´daje o uˇcitel´ıch vˇcetnˇe jejich aprobac´ı, pracovn´ıho zaˇrazen´ı a jin´e. Nav´ıc m´a syst´em propracovan´ y model archivace a zneplatnˇen´ı uˇzivatel˚ u. Data v programu Bakal´aˇri ruˇcnˇe vyplˇ nuje asistentka vˇzdy v okamˇziku, kdy dojde k urˇcit´e zmˇenˇe - nab´ıraj´ı se nov´ı ˇza´ci, studenti nebo zamˇestnanci, osoba ˇskolu z r˚ uzn´ ych d˚ uvod˚ u opust´ı nebo dojde ke zmˇenˇe osobn´ıch u ´daj˚ u. Mimo asistentky m´a pˇr´ıstup do administrace Bakal´aˇr˚ u uˇz jen IT pracovn´ık. Data v aplikaci byla identifikov´ana jako u ´pln´a a pˇredevˇs´ım aktu´aln´ı, t´ım se mysl´ı, ˇze ˇz´adn´ y jin´ y syst´em na ˇskole nemˇel adekv´atnˇe ucelen´e u ´daje jako Bakal´aˇri. V´ yjimkou byla ˇc´ısla ˇcipov´ ych karet d˚ uleˇzit´ ych k ˇcinnostem jako je tisk, vyd´av´an´ı obˇed˚ u v j´ıdelnˇe a doch´azkov´eho syst´emu pro zamˇestnance (viz sekce 2.1.5). Informace tohoto typu se v softwaru v˚ ubec nevyskytovaly, v z´akladn´ım nastaven´ı programu dokonce nebylo ani nalezeno odpov´ıdaj´ıc´ı pole, kam by se mohly ukl´adat. Bakal´aˇri ovˇsem nab´ızej´ı funkcionalitu pˇrid´an´ı atribut˚ u do datab´aze, bylo tedy rozhodnuto, ˇze se vytvoˇr´ı atribut ”ˇc´ıslo ˇcipu” a data budou ruˇcnˇe doplnˇena, v prvn´ı f´azi prim´arnˇe pro uˇcitele - tisk se totiˇz t´ yk´a hlavnˇe jich. Doplnˇen´ım se dos´ahlo i ˇza´douc´ıho vedlejˇs´ıho efektu kontroly spr´avnosti a aktu´alnosti ˇcip˚ u.3 ˇ Skola disponuje verz´ı programu 13/14 s datab´az´ı uloˇzenou v datov´ ych souborech, takzvan´ ych DBF (dBase file) souborech. Neprob´ıh´a ˇz´adn´ y import do aplikace Bakal´aˇri, data jsou vkl´ad´ana pouze ruˇcnˇe, tj. neexistovalo napojen´ı na jin´e syst´emy ˇskoly. Po doplnˇen´ı ˇcip˚ u obsahuj´ı Bakal´aˇri kompletn´ı potˇrebn´a data. Program byl proto zvolen jako prim´arn´ı producent dat, z pohledu integraˇcn´ıho procesu nebude slouˇzit jako konzument dat, protoˇze jiˇz nen´ı nutn´e vkl´adat ˇza´dn´e jin´e informace. Anal´ yza softwaru Bakal´aˇri prob´ıhala formou ruˇcn´ıho proch´azen´ı datab´azov´ ych soubor˚ u (DBF), k prohl´ıˇzen´ı bylo nutn´e nainstalovat program pro ˇcten´ı DBF form´atu. Bylo prozkoum´ano nˇekolik des´ıtek menˇs´ıch i vˇetˇs´ıch soubor˚ u, nakonec bylo zjiˇstˇeno, ˇze u ´daje potˇrebn´e k synchronizaci se nach´az´ı v celkem 5 hlavn´ıch tabulk´ach (UCITELE, ZACI, TRIDY, SKUPINY, WEB). V integraˇcn´ı aplikaci bude nutn´e naprogramovat ˇcten´ı z tˇechto DBF soubor˚ u, protoˇze Bakal´aˇri neposkytuj´ı v´ ystup ve strojovˇe zpracovateln´e podobˇe. 3
v´ıce informac´ı o pˇrid´ an´ı pole v Bakal´aˇr´ıch na http://www.bakalari.cz/znalosti/znalosti. aspx?l=ed1&p=AIEAA&m=EVID&o=KONFIG
4
´ ˇ ´I 2. ANALYZA PROSTRED
2.1.2
2.1 Integrovan´e aplikace
Active Directory
Active Directory (AD) je adres´aˇrov´a sluˇzba obsaˇzen´a v syst´emu Windows Server. Active Directory zahrnuje adres´aˇr, v nˇemˇz jsou uloˇzeny informace o distribuovan´ ych prostˇredc´ıch, stejnˇe jako o sluˇzb´ach, d´ıky nimˇz jsou tyto informace uˇziteˇcn´e a dostupn´e. Vˇsechny verze syst´emu Windows Server od syst´emu Windows 2000 podporuj´ı Active Directory.[9, str. 23] Active Directory implementuje protokol LDAP (Lightweight Directory Access Protocol). P˚ uvodn´ı stav poˇctu dat ve sluˇzbˇe byl velmi n´ızk´ y, Active Directory bylo pouˇz´ıv´ano z pohledu zamˇestnanc˚ u, ˇza´k˚ u a student˚ u jen k pˇrihlaˇsov´an´ı se v poˇc´ıtaˇcov´ ych uˇcebn´ach (respektive k pracovn´ım stanic´ım) do m´ıstn´ı s´ıtˇe, takˇze se vystaˇcilo s u ´daji pˇrihlaˇsovac´ı jm´eno (v Active Directory atribut sAMAccountName), heslo (unicodepwd), jm´eno (givenName), pˇr´ıjmen´ı (sn) a u ´dajem do kdy je u ´ˇcet ´ aktivn´ı. Uˇcty ˇza´k˚ u a student˚ u byly ruˇcnˇe pˇrid´av´any jako ˇclenov´e do glob´aln´ı skupiny studenti. U uˇcitel˚ u byl nav´ıc vyplnˇen u ´daj e-mailov´a adresa (mail) slouˇz´ıc´ı k napojen´ı na Microsoft Exchange Server, sluˇzbu poskytuj´ıc´ı e-mailovou komunikaci. Uˇcitel´e byli ˇclenov´e glob´aln´ı skupiny ucitele. Ke kaˇzd´emu u ´ˇctu pˇr´ısluˇs´ı domovsk´ y adres´aˇr, tj. na serverov´em u ´loˇziˇsti existuje dedikovan´ y adres´aˇr, do kter´eho m´a pˇr´ıstup pouze dan´ y uˇzivatel a administr´ator, uˇzivatel´e zde uchov´avaj´ı sv´a osobn´ı data. Z hlediska pouh´eho ovˇeˇrov´an´ı v˚ uˇci sluˇzbˇe Active Directory by se vystaˇcilo s hodnotami, kter´e se vyskytovaly v p˚ uvodn´ım stavu. Active Directory je ale velmi rozˇs´ıˇren´ y n´astroj, umoˇzn ˇuje pojmout mnohon´asobnˇe vˇetˇs´ı mnoˇzstv´ı informac´ı a hlavnˇe mnoho aplikac´ı na nˇej poskytuje napojen´ı (integraci), v r´amci tohoto projektu se jedn´a pr´avˇe o aplikace SafeQ a Moodle, jak je podrobnˇeji pops´ano v dalˇs´ıch sekc´ıch. Z tohoto d˚ uvodu slouˇz´ı Active Directory z´aroveˇ n jako prim´arn´ı konzument dat z integraˇcn´ı aplikace i jako producent dat (jak´ ysi pˇrenaˇseˇc) pro aplikace Moodle a SafeQ, kv˚ uli kter´ ym bude potˇreba synchronizovat do Active Directory mnohem v´ıce dat. ˇ Skola v Tˇreb´ıˇci disponuje dom´enov´ ym ˇradiˇcem na operaˇcn´ım syst´emu Windows Server 2003 a emailov´ ym serverem Microsoft Exchange Server 2003.
5
´ ˇ ´I 2. ANALYZA PROSTRED
2.1.3
2.1 Integrovan´e aplikace
Moodle
Moodle je open-source e-learningov´ y n´astroj (syst´em pro podporu v´ yuky) nab´ızej´ıc´ı jednotn´ y, robustn´ı, bezpeˇcn´ y a integrovan´ y syst´em k vytv´aˇren´ı personalizovan´ ych v´ yukov´ ych prostˇred´ı, kter´ ych na svˇetˇe vznikly des´ıtky tis´ıc. Tˇeˇs´ı se d˚ uvˇery mal´ ych i velk´ ych instituc´ı a organizac´ı, mezi nˇeˇz se ˇrad´ı Shell, London School of Economics, State University of New York, Microsoft a Open University. Moodle pouˇz´ıv´a pˇres 65 mili´on˚ u uˇzivatel˚ u na akademick´e i firemn´ı u ´rovni, coˇz z nˇej dˇel´a svˇetovˇe nejpouˇz´ıvanˇejˇs´ı v´ yukovou platformu.[7] Moodle nebyl p˚ uvodnˇe na ˇskole v Tˇreb´ıˇci vyuˇz´ıv´an (ani nainstalov´an), jeho implementace prob´ıhala soubˇeˇznˇe s v´ yvojem t´eto integraˇcn´ı aplikace, byla nasazena verze 2.5.1+ (Build: 20130815). Moodle pro svou ˇcinnost potˇrebuje uˇzivatele (studenty a uˇcitele), uˇcitel´e vytv´aˇr´ı obsah e-learningov´ ych kurz˚ u a studenti ho pak vyuˇz´ıvaj´ı ke studiu. To vyˇzaduje vloˇzen´ı informac´ı jako jm´ena, pˇrihlaˇsovac´ı u ´daje a hlavnˇe e-mailov´e adresy, pˇres nˇe prob´ıhaj´ı notifikace o ud´alostech v syst´emu (napˇr´ıklad nov´ y obsah kurzu apod.). D´ale je nutn´e rozdˇelit uˇzivatele, pˇredevˇs´ım studenty, do glob´aln´ıch skupin, pro nˇeˇz se tvoˇr´ı kurzy - naz´ yvaj´ı se kohorty (anglicky cohorts). V prostˇred´ı ˇskoly skupiny pˇresnˇe odpov´ıdaj´ı tˇr´ıd´am (a jej´ım skupin´am) tak, jak jsem popsal v´ yˇse v sekci o softwaru Bakal´aˇri, tato rozdˇelen´ı je tedy ˇz´adouc´ı pˇren´est do Moodle. Moodle bude v prvn´ı f´azi implementace pouze konzumentem dat, nebude produkovat nov´a data, kter´a by bylo potˇreba synchronizovat do jin´ ych aplikac´ı. Do budoucna by se dalo uvaˇzovat napˇr´ıklad o importu zn´amek z online test˚ u do aplikace Bakal´aˇri.
2.1.4
YSoft SafeQ
YSoft SafeQ je tiskov´e ˇreˇsen´ı, kter´e pˇrin´aˇs´ı kontrolu nad tiskem, kop´ırov´an´ım a skenov´an´ım v podniku. V prostˇred´ı z´akazn´ıka bˇeˇz´ı verze syst´emu 3.6. Tisk je prim´arnˇe urˇcen jen pro zamˇestnance ˇskoly (hlavnˇe uˇcitele). Do SafeQ se uˇzivatel identifikuje pomoc´ı ˇcipov´e karty, obsahuj´ıc´ı ˇc´ıslo ˇcipu, a to na termin´ale um´ıstˇen´em na tiskov´ ym/kop´ırovac´ım zaˇr´ızen´ı. Software zkus´ı ve sv´e datab´azi vyhledat poˇza-
6
´ ˇ ´I 2. ANALYZA PROSTRED
2.2 St´avaj´ıc´ı ˇreˇsen´ı
dovan´e ˇc´ıslo ˇcipu a spojit ho se odpov´ıdaj´ıc´ım kontem, kter´e obsahuje kompletn´ı historii tisku, stav konta, a tak´e jm´eno, pˇr´ıjmen´ı a ostatn´ı u ´daje o osobˇe. Vˇsechna tato data byla zad´av´ana ruˇcnˇe pˇres webov´e rozhran´ı, kter´e Ysoft SafeQ poskytuje. Nejd˚ uleˇzitˇejˇs´ı ˇca´st´ı integrace bude pˇren´est ˇc´ısla ˇcip˚ u ze softwaru Bakal´aˇri do intern´ı datab´aze SafeQ. SafeQ nepˇrin´aˇs´ı nov´e informace, kter´e by bylo potˇreba pˇred´avat do ostatn´ıch integrovan´ ych aplikac´ı, splˇ nuje tak definici konzumenta dat.
2.1.5
Dalˇ s´ı aplikace
P˚ uvodnˇe mˇel b´ yt integrov´an i software J´ıdelna, ale vzhledem k tomu, ˇze se jedn´a jen o lok´aln´ı instalaci (tj. aplikace nen´ı na serveru, ale pouze na jednom poˇc´ıtaˇci v j´ıdelnˇe, kter´ y nen´ı pˇr´ıstupn´ y poˇr´ad) a nav´ıc jde o velmi zastaral´ y software bez moˇznosti importu dat (jinak neˇz pˇr´ım´ ym nebezpeˇcn´ ym z´apisem do DBF soubor˚ u aplikace), byl z t´eto f´aze projektu vyjmut. To zp˚ usobilo probl´em, protoˇze pr´avˇe tento software je nejlepˇs´ım zdrojem ˇc´ısel ˇcip˚ u na ˇskole, a to z toho d˚ uvodu, ˇze prakticky kaˇzd´ y drˇzitel ˇcipu z´aroveˇ n navˇstˇevuje j´ıdelnu. Dalˇs´ımi syst´emy na ˇskole jsou software Karas (spr´ava student˚ u ubytovan´ ych na intern´atu ˇskoly) a software Doch´azka (evidence pˇr´ıchod˚ u a odchod˚ u zamˇestnanc˚ u do pr´ace), z kapacitn´ıch i ˇcasov´ ych d˚ uvod˚ u ale nakonec souˇca´st´ı integrace nejsou. V souˇcasn´e dobˇe se vˇsak chyst´a druh´a f´aze nasazen´ı integraˇcn´ı aplikace, kter´a uˇz postihne u ´plnˇe vˇsechny syst´emy z´akazn´ıka.
2.2
St´ avaj´ıc´ı ˇ reˇ sen´ı
P˚ uvodn´ı stav synchronizace“ dat na ˇskole byl z´avisl´ y na ruˇcn´ım zad´av´an´ı (a tedy ” neust´al´em opisov´an´ı) informac´ı do vˇsech aplikac´ı. Proces by se dal popsat takto: ˇskola pˇrijala nov´eho ˇz´aka nebo uˇcitele, ten byl zaveden do softwaru Bakal´aˇri (klasick´e u ´daje jako inici´aly, m´ısto narozen´ı, tˇr´ıda, rodn´e ˇc´ıslo a pˇribliˇznˇe 50-100 dalˇs´ıch poloˇzek). V pˇr´ıpadˇe, ˇze chtˇel navˇstˇevovat j´ıdelnu, sekret´aˇrka mu vydala ˇcip s unik´atn´ım ˇc´ıslem (kdyˇz se jednalo o uˇcitele, dostal ˇcip vˇzdy, protoˇze se pouˇz´ıv´a pro tisk i doch´azkov´ y syst´em). Osoba pak musela s ˇcipem doj´ıt do j´ıdelny, kde pˇr´ısluˇsn´a obsluha zadala znovu u ´daje (vˇcetnˇe ˇc´ısla ˇcipu) do softwaru J´ıdelna. Uˇcitel byl zaveden tak´e v doch´azkov´em syst´emu (zad´avala znovu sekret´aˇrka). Pot´e nast´avala ˇca´st pr´ace pro administr´atora s´ıtˇe, ten zavedl uˇzivatele do souboru ve form´atu Excel (jm´eno, 7
´ ˇ ´I 2. ANALYZA PROSTRED
2.2 St´avaj´ıc´ı ˇreˇsen´ı
pˇr´ıjmen´ı, login, heslo, platnost), na kter´ y mˇel nav´azan´ y skript v jazyku Visual Basic for Applications (VBA), jeˇz importoval osobu do Active Directory, ˇc´ımˇz osoba z´ıskala pˇr´ıstup do ˇskoln´ı s´ıtˇe (pˇrihlaˇsov´an´ı se na poˇc´ıtaˇce v uˇcebn´ach apod.). Z´aroveˇ n administr´ator s´ıtˇe zavedl uˇzivatele i do softwaru pro tisk SafeQ (opˇet jm´eno, pˇr´ıjmen´ı, ˇc´ıslo ˇcipu, stav konta). Pokud osoba mˇela b´ yt ubytov´ana na intern´atu ˇskoly, administr´ator s´ıtˇe opakoval zad´av´an´ı i do tohoto syst´emu (software Karas). Mohla nastat i situace, kdy na intern´atu bydl´ı osoby, kter´e nejsou souˇca´st´ı ani jednoho z pˇredchoz´ıch syst´em˚ u, protoˇze intern´at slouˇz´ı i jako ubytovna. V tˇechto pˇr´ıpadech vˇetˇsinou osoby ˇza´daj´ı administr´atora s´ıtˇe o pˇr´ıstup do Active Directory, aby se mohly pˇrihlaˇsovat do ˇskoln´ı s´ıtˇe. Pˇri odchodu osoby ze ˇskoly musel probˇehnout proces opaˇcn´ y, tj. zneplatnˇen´ı uˇzivatele. Velmi ˇcasto nast´avaly situace, kdy se na jeho u ´ˇcty zapomnˇelo a ty pak z˚ ust´avaly neˇcinn´e v aplikac´ıch (ˇcasto pr´avˇe v Active Directory). To s sebou nese i bezpeˇcnost´ı rizika, kdyby si osoba byla vˇedoma, ˇze jej´ı u ´ˇcty jsou st´ale aktivn´ı, mohla by napˇr´ıklad pˇristupovat do ˇskoln´ı s´ıtˇe, i pˇresto ˇze uˇz takov´ ym pr´avem disponovat nem´a.
8
3 | N´ avrh ˇ reˇ sen´ı Navrhovan´e ˇreˇsen´ı mus´ı pokr´ yt pˇrenos dat mezi aplikacemi, kter´e jsou uvedeny v tabulce 7.1. Tabulka 3.1: Pˇrehled integrovan´ ych aplikac´ı aplikace verze vazba pˇ res Bakal´aˇri 13/14 INTERN KOD Active Directory AD pro Windows Server 2003 sAMAccountName Moodle 2.5.1+ sAMAccountName SafeQ 3.6 cn Pro kaˇzdou integrovanou aplikaci je nutn´e urˇcit vazbu mezi daty, kter´a obsahuje, a daty, kter´a jsou obsaˇzena v aplikaci, na kterou se napojuje. Tato vazba mus´ı b´ yt unik´atn´ı, nezamˇeniteln´a s ˇz´adnou jinou vazbou. Po anal´ yze jednotliv´ ych aplikac´ı byl navrˇzen princip toku dat, s ohledem na to, jak´a data aplikace obsahuj´ı a hlavnˇe jak´e jsou moˇznosti napojen´ı aplikac´ı na jin´e programy. Jeho vizualizace je ilustrov´ana na obr´azku 3.14 . Program Bakal´aˇri neposkytuje napojen´ı na extern´ı syst´em, proto bylo zvoleno napojen´ı na vyv´ıjenou integraˇcn´ı aplikaci - INUM (Integrated User Manager - N´astroj pro integraci uˇzivatelsk´ ych u ´ˇct˚ u). Pˇri anal´ yze jeho datab´azov´ ych soubor˚ u bylo zjiˇstˇeno, ˇze tabulky ZACI.dbf (data o ˇza´c´ıch a studentech) a UCITELE.dbf (data o uˇcitel´ıch) obsahuj´ı pˇetim´ıstn´ y prim´arn´ı kl´ıˇc v atributu INTERN_KOD (ˇretˇezec znak˚ u) unik´atn´ı v r´amci kontextu datab´aze, je totiˇz pouˇz´ıv´an pro vazbu na jin´e tabulky (napˇr´ıklad uˇcitel na tˇr´ıdu jako tˇr´ıdn´ı uˇcitel, ˇza´k na skupinu atd.). Tabulky TRIDY.dbf a SKUPINY.dbf obsahuj´ı prim´arn´ı kl´ıˇc KOD_TRID respektive KOD_SKUP. Tˇechto unik´atn´ıch identifik´ator˚ u bude vyuˇzito pˇri naˇc´ıt´an´ı dat do datab´aze integraˇcn´ı aplikace, 4
obr´ azek vytvoˇren pomoc´ı aplikace Google Drawing, loga pˇrevzata z: http://www.gjp-me.cz/uploads/images/aktuality/101217-u-dp-uprav/340.jpg http://enowsoftware.com/assets/images/active-directory-logo.png http://www.sharp-cee.com/cps/rde/xbcr/scee/productimages/260_ img-P-document-solution-yssq-960.jpg http://files.gybnp.webnode.cz/200001682-0682b077cd/moodle-icon.jpg
9
´ ˇ SEN ˇ ´I 3. NAVRH RE
INUM
Obr´azek 3.1: N´avrh datov´eho toku
10
´ ˇ SEN ˇ ´I 3. NAVRH RE
kde bude pro kaˇzdou entitu odpov´ıdaj´ıc´ı sloupec bakalari_id. Pokud bude v datab´azi jiˇz ˇra´dek s konkr´etn´ım unik´atn´ım kl´ıˇcem, bude se z´aznam upravovat, pokud ne, bude vytvoˇren nov´ y z´aznam. Tabulky ZACI.dbf a UCITELE.dbf obsahuj´ı nav´ıc jeˇstˇe sloupec DELETED_RC, kter´ y znaˇc´ı, zda je z´aznam povaˇzov´an za smazan´ y. Po urˇcit´e dobˇe smazan´e z´aznamy z tabulek miz´ı a archivuj´ı se do jin´ ych tabulek (v pˇr´ıpadˇe skupin a tˇr´ıd miz´ı rovnou) - kdyˇz se pak nenajde z´aznam pˇri synchronizaci dat v tabulk´ach, bude povaˇzov´an za smazan´ y a nastav´ı se tak pˇr´ısluˇsn´ y atribut v integraˇcn´ı datab´azi. Z tabulky integraˇcn´ı aplikace z´aznamy mizet nebudou, pouze budou m´ıt nastaven pˇr´ıznak smaz´an. Active Directory bude napojeno tak´e na integraˇcn´ı aplikaci, aby se mohla naˇcten´a data z Bakal´aˇr˚ u pˇren´aˇset do nˇej. V AD je unik´atn´ıch atribut˚ u v´ıce, byl zvolen atribut sAMAccountName (neboli pˇrihlaˇsovac´ı jm´eno - login; ˇretˇezec znak˚ u). Ten sice z definice unik´atn´ı b´ yt nemus´ı, administr´ator m´a ale na ˇskole nastaven proces tak, ˇze sAMAccountName je stejn´ y jako atribut cn (common name), a ten uˇz unik´atn´ı je. V datab´azi INUM bude veden atribut ldap_id, kter´ y bude obsahovat pr´avˇe tuto hodnotu. Login se generuje podle logiky nastaven´e administr´atorem, bude se tedy muset tento algoritmus zapracovat do integraˇcn´ı aplikace a souˇcasnˇe naj´ıt zp˚ usob, jak co nejjednoduˇseji a efektivnˇe importovat jiˇz existuj´ıc´ı loginy a hesla z Active Directory do INUM, protoˇze synchronizace bude prov´adˇena ze strany aplikace. Na obr´azku 3.1 je ˇsipka toku dat i z Active Directory do INUM - sAMAccountName totiˇz nen´ı nejlepˇs´ı atribut pro vazbu dat, ten v AD pˇredstavuje atribut objectGUID (unik´atn´ı 16B (bajtov´ y) ˇretˇezec znak˚ u, mˇel by b´ yt unik´atn´ı celosvˇetovˇe). Tento atribut bude ukl´ad´an do datab´aze INUM a v budoucnu se moˇzn´a pˇres nˇej budou vyhled´avat objekty v Active Directory. Pokud bude synchronizovan´ y objekt v Active Directory existovat, budou se pouze mˇenit jeho atributy podle dat v datab´azi INUM, pokud nebude existovat, vytvoˇr´ı se nov´ y. V pˇr´ıpadˇe objekt˚ u s pˇr´ıznakem smazan´ y - pokud objekt neexistuje v AD, nebude se pˇrid´av´at, pokud existuje, zneplatn´ı se dan´ y objekt (nebude se mazat, ale napˇr. uˇzivatel nebude schopen se pˇrihl´asit). Moodle nab´ız´ı modul pro integraci s Active Directory, vazba bude prob´ıhat tak´e pˇres atribut sAMAccountName. Logiku vytv´aˇren´ı, aktualizace a zneplatnˇen´ı objekt˚ u bude ˇr´ıdit s´am modul. To sam´e plat´ı pro Ysoft SafeQ s t´ım rozd´ılem, ˇze vazba bude konfigurov´ana pˇres atribut cn. Moodle i SafeQ budou iniciovat synchronizaci dat vlastn´ım zabudovan´ ym pl´anovaˇcem.
11
4 | N´ astroje pro implementaci V t´eto kapitole je struˇcnˇe pops´ano, kter´e n´astroje byly pouˇzity pro v´ yvoj (implementaci) integraˇcn´ı aplikace. Nejdˇr´ıve se popis vˇenuje v sekci Aplikaˇcn´ı vrstva n´astroj˚ um od projektu Spring5 , kter´e tvoˇr´ı j´adro aplikace, n´aslednˇe program˚ um staraj´ıc´ım se o uchov´av´an´ı a bezpeˇcnost dat v sekci Datov´a vrstva, pot´e prvk˚ um jeˇz napom´ahaj´ı k zobrazovan´ı dat v sekci Webov´a vrstva a server˚ um zajiˇst’uj´ıc´ım bˇeh cel´e aplikace v sekci Serverov´a vrstva. Byly pouˇzity i nˇekter´e jin´e n´astroje, kter´e se do v´ yˇse uveden´eho rozdˇelen´ı nehodily, ty jsou pops´any ve vlastn´ıch sekc´ıch. Jsou uvedeny jen nejd˚ uleˇzitˇejˇs´ı programy, integraˇcn´ı n´astroj obsahuje velkou spoustu dalˇs´ıch projekt˚ u, jako napˇr´ıklad Google Guava6 . Vˇetˇsina n´astroj˚ u je open-source a bezplatn´ ych.
4.1
Aplikaˇ cn´ı vrstva
Aplikaˇcn´ı vrstva ovlivˇ nuje cel´ y chod integraˇcn´ıho n´astroje, ˇr´ıd´ı logiku aplikace, star´a se o tok dat a moˇznosti, jak k nim pˇristupovat. Dalo by se ˇr´ıci, ˇze se jedn´a o z´akladn´ı k´amen cel´e implementace.
4.1.1
Spring Framework
Spring Framework je r´amec pro tvorbu aplikac´ı v programovac´ım jazyku Java od firmy Pivotal. Prvn´ı jeho verze byla publikov´ana jiˇz v roce 2003 program´atorem Rodem Johnsonem s c´ılem ulehˇcit v´ yvojov´ ym t´ ym˚ um vytv´aˇren´ı jednoduch´ ych (ale i sloˇzit´ ych), pˇrenositeln´ ych, rychl´ ych a flexibiln´ıch aplikac´ı podle standardu J2EE. Obsahuje velk´e mnoˇzstv´ı nejr˚ uznˇejˇs´ıch ˇc´ast´ı a v´ yvojov´ ych vˇetv´ı, na druhou stranu je modul´arn´ı, to znamen´a, ˇze v´ yvoj´aˇr m˚ uˇze jednoduˇse pouˇz´ıvat jen ty ˇca´sti, kter´e 5 6
URL http://spring.io/ URL: https://code.google.com/p/guava-libraries/
12
´ 4. NASTROJE PRO IMPLEMENTACI
4.1 Aplikaˇcn´ı vrstva
jsou k dosaˇzen´ı jeho c´ıl˚ um potˇrebn´e.[5] Z mnoˇzstv´ı modul˚ u nab´ızen´ ych Spring Framework je pouˇz´ıv´an Spring Core (funkce j´adra), Spring AOP (moˇznost aspektovˇe orientovan´eho programov´an´ı), Spring JDBC a Spring ORM (pr´ace s datab´azemi) a hlavnˇe Spring Web MVC, tato ˇc´ast poskytuje podporu pro MVC architekturu webov´e aplikace. MVC (Model-View-Controller) je zn´am´ y n´avrhov´ y vzor, princip jeho fungov´an´ı lze vidˇet na obr´azku 4.1. Vˇsechny moduly jsou v integraˇcn´ı aplikaci pouˇzity ve verzi Spring 3.2.4.RELEASE.
Obr´azek 4.1: MVC architektura
4.1.2
Spring Security
Spring Security je aplikace slouˇz´ıc´ı k ovˇeˇrov´an´ı a autorizaci pˇr´ıstupu a je povaˇzov´ana za standard zabezpeˇcov´an´ı aplikac´ı vyv´ıjen´ ych ve Spring Framework. Je 13
´ 4. NASTROJE PRO IMPLEMENTACI
4.2 Datov´a vrstva
velmi dobˇre integrov´ana se Spring Web MVC.[1] V synchronizaˇcn´ı aplikaci kontroluje pˇr´ıstup (pˇrihl´aˇsen´ı) do webov´e aplikace, aby nedoˇslo k neopr´avnˇen´emu ˇcten´ı nebo zmˇenˇe dat. V datab´azi jsou totiˇz velmi citliv´e u ´daje (rodn´a ˇc´ısla apod.), je tedy ˇza´douc´ı, aby byl pˇr´ıstup poskytnut pouze administr´ator˚ um, v tomto projektu se jedn´a o v´ yvoj´aˇre aplikace a IT pracovn´ıka ˇskoly. Kdyby nebyla aplikace zabezpeˇcena, mohl by se na jej´ı webov´e rozhran´ı pˇripojit prakticky kdokoliv znal´ y jej´ı URL. Pouˇzit´a verze Spring Security je 3.1.4.RELEASE.
4.1.3
Spring LDAP
Spring LDAP je d˚ uleˇzit´ y modul pro spr´avu a komunikaci s prostˇred´ım Active Directory. Jedn´a se Java knihovnu ke zjednoduˇsen´ı operac´ı s LDAP (Lightweight Directory Access Protocol - protokol, na nˇemˇz je postaveno mimo jin´e i Active Directory) ve stylu n´avrhov´eho vzoru JdbcTemplate. R´amec poskytuje pro uˇzivatele sadu obvykl´ ych u ´kon˚ u, jako je vyhled´av´an´ı v kontextu adres´aˇre, proch´azen´ı pˇres vr´acen´e v´ ysledky, ˇsifrov´an´ı/deˇsifrov´an´ı dat, filtrovan´ı apod.[2] V integraˇcn´ı aplikaci je pouˇzita verze 1.3.2.RELEASE.
4.2
Datov´ a vrstva
N´asleduj´ıc´ı n´astroje se staraj´ı o uchov´av´an´ı, z´ısk´av´an´ı a bezpeˇcnost dat v integraˇcn´ı aplikaci.
4.2.1
Hibernate ORM
Hibernate ORM (Object/Relational Mapping) pˇredstavuje framework pro tvorbu aplikac´ı, jejichˇz data musej´ı b´ yt uchov´ana permanentnˇe, tzn. nejedn´a se jen o online data s kr´atkou dobou ˇzivotnosti. Hibernate znaˇcnˇe ulehˇcuje ukl´ad´an´ı tˇechto dat do pˇr´ısluˇsn´e datab´aze, poskytuje n´astroje pro z´ısk´av´an´ı dat zpˇet a hlavnˇe zajiˇst’uje jejich mapov´an´ı na POJO (Plain Old Java Object) objekty, to znamen´a, ˇze data uloˇzen´a obvykle v relaˇcn´ıch datab´az´ıch (tabulkov´e) pˇrevede na data drˇzen´a v Java objektech. Hibernate ORM implementuje standard JPA (Java Persistence 14
´ 4. NASTROJE PRO IMPLEMENTACI
4.3 Webov´a vrstva
API) a dovede velmi u ´zce spolupracovat s aplikaˇcn´ım r´amcem Spring Framework.[4] V integraˇcn´ı aplikaci je vyuˇz´ıv´ana verze Hibernate 4.2.4.Final.
4.2.2
MySQL
Pro uchov´av´an´ı dat je nutn´e pouˇz´ıt datab´azi, v tomto projektu se jedn´a o relaˇcn´ı datab´azi Mysql ve verzi 5.5.
4.2.3
Jasypt
Jasypt7 je knihovna v jazyce Java umoˇzn ˇuj´ıc´ı ˇsifrov´an´ı dat, je schopna ovl´adat jak symetrick´e, tak asymetrick´e ˇsifrov´an´ı a hashov´an´ı dat. Jej´ı snadn´e napojen´ı na Hibernate umoˇzn´ı napˇr´ıklad ukl´adat hesla uˇzivatel˚ u do datab´aze v zaˇsifrovan´e podobˇe, takˇze v pˇr´ıpadˇe nepˇredpokl´adan´eho u ´niku (to ale neznamen´a, ˇze se nem˚ uˇze st´at) dat z datab´aze se nedostane u ´toˇcn´ık k citliv´ ym informac´ım.
4.3
Webov´ a vrstva
Webov´a vrstva se skl´ad´a pˇrev´aˇznˇe z n´astroj˚ u zobrazuj´ıc´ıch potˇrebn´e informace pro administr´atory integraˇcn´ı aplikace na rozhran´ı internetov´eho prohl´ıˇzeˇce, takˇze umoˇzn ˇuje aplikace ovl´adat a konfigurovat pˇres webov´e rozhran´ı stejnˇe jako zobrazovat data uloˇzen´a v datab´azi.
4.3.1
Twitter Bootstrap
Twitter Bootstrap8 je v posledn´ı dobˇe trendem r˚ uznorod´ ych webov´ ych aplikac´ı, coˇz se st´av´a ˇc´ım d´al v´ıce terˇcem kritik˚ u tohoto projektu, argumentuj´ı totiˇz t´ım, ˇze vˇsechny port´aly maj´ı stejn´ y vzhled a nav´ıc nenut´ı uˇzivatele, kteˇr´ı ho pouˇzij´ı, pˇr´ıliˇs rozumˇet kask´adov´ ym styl˚ um a jin´ ym element´arn´ım dovednostem program´atora 7 8
URL: http://www.jasypt.org/ URL: http://getbootstrap.com/
15
´ 4. NASTROJE PRO IMPLEMENTACI
4.3 Webov´a vrstva
webov´eho rozhran´ı. V t´eto problematice zast´av´am tak´e sp´ıˇse kritick´ y n´azor, na druhou stranu pˇr´ınos t´eto integraˇcn´ı aplikace nem´a b´ yt ve spektakul´arn´ım a efektn´ım uˇzivatelsk´em designu, ale v jej´ı funkcionalitˇe a efektivitˇe, takˇze pro potˇreby konfigurace pˇres web je Bootstrap velmi vyhovuj´ıc´ı a usnadˇ nuj´ıc´ı dalˇs´ı rozvoj aplikace. Twitter Bootstrap pˇrin´aˇs´ı responzivn´ı (mˇen´ıc´ı se dle ˇs´ıˇrky zobrazuj´ıc´ıho zaˇr´ızen´ı) design orientovan´ y hlavnˇe na mobiln´ı zaˇr´ızen´ı, aby se aplikace vytvoˇren´e pro klasick´e rozliˇsen´ı monitor˚ u daly ovl´adat i pˇres tato zaˇr´ızen´ı s menˇs´ımi zobrazovac´ımi schopnostmi. Poskytuje vlastn´ı CSS (kask´adov´e) styly a vyuˇz´ıv´a rozˇs´ıˇren´eho javascriptov´eho frameworku jQuery9 . Pouˇz´ıv´ana je verze Twitter Bootstrap 3.0.3, jQuery v1.11.0 a pluginy pro Bootstrap jako napˇr. Bootbox nebo bootstrap-datetimepicker.
4.3.2
Freemarker
Freemarker10 je ˇsablonovac´ı jazyk podobn´ y p˚ uvodn´ım JSP (Java Server Pages) ˇci Velocity. Slouˇz´ı pro generov´an´ı pˇrev´aˇznˇe HTML str´anek, v tˇr´ıvrstv´e architektuˇre MVC se jedn´a o p´ısmeno V (view). Je schopen zobrazovat Java objekty pˇredan´e v modelu, a naplˇ novat tak obsah generovan´eho v´ ystupu, lehce se pomoc´ı nˇeho oddˇel´ı aplikaˇcn´ı logika od zobrazov´an´ı dat. Integraˇcn´ı aplikace obsahuje Freemarker verze 2.3.20.
4.3.3
Sitemesh
Sitemesh11 pˇredstavuje program implementuj´ıc´ı Decorator pattern (n´avrhov´ y vzor dekor´ator), kter´ y v tomto konkr´etn´ım pˇr´ıpadˇe ˇr´ık´a, ˇze lze jednoduˇse rozdˇelit HTML k´od str´anky na ˇca´sti, kter´e se opakuj´ı (napˇr´ıklad hlaviˇcka, patiˇcka), a ˇca´sti, kter´e jsou unik´atn´ı pro kaˇzdou str´anku (jej´ı obsah). Pomoc´ı Sitemesh se vytvoˇr´ı tzv. dekor´ator, j´ımˇz se obal´ı kaˇzd´a urˇcen´a str´anka po jej´ım generov´an´ı, takˇze nemus´ıme opakuj´ıc´ı se ˇca´sti kop´ırovat na v´ıce m´ıst v k´odu, ale m´ame je pouze na jednom m´ıstˇe. Pˇr´ıpadn´a zmˇena dekor´atoru je pak podstatnˇe jednoduˇsˇs´ı a rychlejˇs´ı na proveden´ı. 9
URL: http://jquery.com/ URL: http://freemarker.org/ 11 URL: http://wiki.sitemesh.org/wiki/display/sitemesh/Home 10
16
´ 4. NASTROJE PRO IMPLEMENTACI
4.4
4.4 Serverov´a vrstva
Serverov´ a vrstva
Aplikace napsan´e ve Spring Framework potˇrebuj´ı pro svoji ˇcinnost webov´ y server, kter´ y se bude starat o pˇred´av´an´ı poˇzadavk˚ u ze strany klienta, napˇr´ıklad zad´an´ı pˇr´ısluˇsn´e URL aplikace do webov´eho prohl´ıˇzeˇce. Pouˇzity jsou dva takov´e servery, jeden pˇri v´ yvoji a druh´ y pˇri implementaci v produkˇcn´ım prostˇred´ı z´akazn´ıka.
4.4.1
Jetty
Jetty12 server je pouˇzit pro v´ yvoj integraˇcn´ı aplikace, a to z d˚ uvodu jeho jednoduchosti a nen´aroˇcnosti na syst´emov´e prostˇredky. Jedn´a se o HTTP (Hypertext Transfer Protocol) server a Java Servlet kontejner, operov´ano je s verz´ı 7.6.4.
4.4.2
Apache Tomcat
Apache Tomcat13 je pouˇzit v produkˇcn´ım prostˇred´ı tˇreb´ıˇcsk´e ˇskoly. Nevyuˇz´ıv´a se Jetty server, protoˇze Apache Tomcat velmi dobˇre a u ´zce spolupracuje s Apache14 , coˇz je open-source HTTP server. Na Apache serveru bˇeˇz´ı v produkˇcn´ım prostˇred´ı napˇr´ıklad Moodle (projekt napsan´ y v programovac´ım jazyku PHP), a tak by bylo zbyteˇcn´e nasazovat dalˇs´ı HTTP server, nav´ıc by nastal probl´em s pˇresmˇerov´an´ım port˚ u atp. Apache Tomcat je tak´e jako Jetty Java Servlet kontejner, u z´akazn´ıka je nasazen Apache verze 2.4 a Apache Tomcat verze 7.0.50.
4.5
Maven
Apache Maven15 je software pro spr´avu vyv´ıjen´eho projektu, ˇr´ıd´ı proces kompilace zdrojov´eho k´odu, lze definovat z´avislosti na ostatn´ıch Java knihovn´ach, generov´an´ı dokumentace a jin´e. Konfigurace projektu prob´ıh´a pomoc´ı souboru pom.xml 12
URL: URL: 14 URL: 15 URL: 13
http://www.eclipse.org/jetty/ http://tomcat.apache.org/ http://httpd.apache.org/ http://maven.apache.org/
17
´ 4. NASTROJE PRO IMPLEMENTACI
4.6 Powershell
v koˇrenov´em adres´aˇri projektu. Pokud v souboru uvedeme z´avislost na ciz´ı knihovnˇe, Maven se postar´a o proces staˇzen´ı pˇr´ısluˇsn´e knihovny z tzv. repository (´ uloˇziˇstˇe) a pˇrid´a ji do kontextu projektu, pot´e lze knihovnu vyuˇz´ıvat kdekoliv v aplikaci. Umoˇzn ˇuje tak´e lepˇs´ı spr´avu vˇsech pouˇzit´ ych z´avislost´ı a snadnou v´ ymˇenu nebo jejich aktualizaci.
4.6
Powershell
”Powershell se pomalu stal neodmyslitelnou souˇca´st´ı operaˇcn´ıho syst´emu Windows a dalˇs´ıho aplikaˇcn´ıho softwaru spoleˇcnosti Microsoft. Nebylo by na tom nic divn´eho, kdyby se nejednalo o technologii, kter´a byla jeˇstˇe pˇred p´ar lety pro Windows pomˇernˇe netypick´a: textov´e pˇr´ıkazov´e rozhran´ı, spr´avcovsk´a textov´a konzola, zkr´atka shell.”[6, str. 14] D˚ uvody, proˇc bylo rozhodnuto pouˇz´ıt v r´amci implementace integraˇcn´ı aplikace pr´avˇe Powershell, jsou v nˇekter´ ych ohledech nedostateˇcn´e moˇznosti programovac´ı jazyku Java a pˇr´ısluˇsn´ ych Java knihoven v operac´ıch s prostˇred´ım Windows, Active Directory a v operac´ıch se souborov´ ym syst´emem.[8] Skripty naps´an´e pro Powershell lze pouˇstˇet a ovl´ad´at z prostˇred´ı aplikace a plnˇe nahrad´ı nedokonalosti Javy a pomohou vyˇreˇsit probl´emy, napˇr´ıklad pr´ava uˇzivatel˚ u Active Directory k pˇr´ıstupu ke sloˇzk´am. Powershell pro Windows Server je bˇeˇznˇe dostupn´ y aˇz od verze Windows Server 2008, takˇze v produkˇcn´ım prostˇred´ı se musel nainstalovat bal´ıˇcek od Microsoft s n´azvem Windows Management Framework Core16 , kter´ y obsahuje verzi Windows Powershell 2.0 a jeˇstˇe musel b´ yt pˇrid´an bal´ıˇcek pˇr´ıkaz˚ u pro ovl´ad´an´ı Active Directory (nen´ı ve verzi Windows Server 2003) od firmy Quest17 .
16 17
dostupn´ y z: http://support.microsoft.com/kb/968930 dostupn´ y z: http://www.quest.com/powershell/activeroles-server.aspx
18
5 | Implementace n´ astroje N´astroj pro integraci uˇzivatelsk´ ych u ´ˇct˚ u je nazv´an anglicky Integrated User Manager, odtud zkratka INUM.
5.1
V´ yvoj aplikace
V´ yvoj pilotn´ı verze aplikace prob´ıhal v obdob´ı od konce srpna 2013 do ˇr´ıjna 2013, pracovn´ım prostˇred´ım byl osobn´ı poˇc´ıtaˇc. Na obr´azku 5.1 je vidˇet historie vkl´ad´an´ı zmˇen do verzovac´ıho syst´emu GIT.
Obr´azek 5.1: Graf historie poˇctu zmˇen ve verzovac´ım syst´emu (z aplikace Gitblit) Zaˇcalo se vytvoˇren´ım nov´eho projektu v Java frameworku Spring, zaloˇzen´ım MySQL datab´aze pro u ´ˇcely v´ yvoje a napojen´ı datab´aze pˇres projekt Hibernate ORM. N´asledoval n´avrh datab´azov´eho modelu popsan´ y v n´asleduj´ıc´ı sekci.
5.1.1
Datov´ y model
Datov´ y model z velk´e ˇca´sti kop´ıruje strukturu datab´aze programu Bakal´aˇri. Na obr´azku 5.2 je vidˇet relaˇcn´ı model pro datab´azov´e entity osoba (Person), tˇr´ıda (Clazz ) a skupina (Group) a vazby mezi nimi. V pˇr´ıloze A je uveden kompletn´ı datab´azov´ y model.
19
´ 5. IMPLEMENTACE NASTROJE
5.1 V´ yvoj aplikace
Obr´azek 5.2: Datov´ y model U kaˇzd´eho atributu bylo potˇreba peˇclivˇe zv´aˇzit jeho datov´ y form´at, aby pˇri pˇrenosu dat do integrovan´ ych aplikac´ı nemuselo doch´azet ke zbyteˇcn´e konverzi mezi form´aty. Jednotliv´e atributy uveden´ ych tabulek byly jeden po druh´em hodnoceny,
20
´ 5. IMPLEMENTACE NASTROJE
5.1 V´ yvoj aplikace
zda m´a, nebo by mohl v budoucnu m´ıt, vyuˇzit´ı pˇri integraci s ostatn´ımi syst´emy. Tak vzniklo v aplikaci INUM moment´alnˇe mnoho nadbyteˇcn´ ych informac´ı (konkr´etnˇe tˇreba u ´vazky uˇcitel˚ u), ale na druhou stranu se napˇr´ıklad uk´azalo, ˇze p˚ uvodnˇe zd´anlivˇe zbyteˇcn´ y atribut pracovn´ ı zaˇ razen´ ı, kter´ y pˇredstavuje ˇc´ıselnou hodnotu, je velmi d˚ uleˇzitou souˇca´st´ı algoritmu rozliˇsov´an´ı intern´ıch a extern´ıch uˇcitel˚ u. Dalo by se tvrdit, ˇze aplikace INUM slouˇz´ı jako pˇrechodn´e u ´loˇziˇstˇe dat z Bakal´aˇr˚ u, to ´ je ale jenom jeden u ´hel pohledu. Udaje totiˇz pˇri synchronizaci jsou zpracov´av´any a ukl´ad´any v aplikaci pod vhodnou strukturou (pˇr´ıkladem m˚ uˇze b´ yt zaˇrazen´ı ˇza´ka do skupiny – v Bakal´aˇr´ıch m˚ uˇze b´ yt uloˇzen jako v´ yˇcet unik´atn´ıch kl´ıˇc˚ u osob v textov´em poli, v aplikaci INUM je v´ yˇcet pˇretvoˇren na vazbu 1:N mezi osobou a skupinou). Nav´ıc datab´aze INUM obsahuje d˚ uleˇzit´e vazebn´ı atributy jak na program Bakal´aˇri, tak na Active Directory, coˇz Bakal´aˇri nemaj´ı.
5.1.2
Z´ısk´ an´ı dat
Po n´avrhu a implementaci datov´eho modelu se zaˇcalo pracovat na prvotn´ı integraci s prim´arn´ım producentem dat, programem Bakal´aˇri. Zp˚ usob napojen´ı je detailnˇe pops´an v kapitole 6 Integrace aplikac´ı. Pro v´ yvojov´e u ´ˇcely se musely zkop´ırovat datab´azov´e soubory z produkˇcn´ıho prostˇred´ı na m´ıstn´ı disk v´ yvojov´eho poˇc´ıtaˇce, aby v pˇr´ıpadˇe, ˇze by se provedl neplatn´ y z´apis do soubor˚ u nebo se jakkoliv jinak poˇskodily, nebyla ovlivnˇena produkˇcn´ı data. Pot´e doˇslo k naˇcten´ı u ´daj˚ u do datab´aze INUM. N´asledovala pˇr´ıprava dat pro napojen´ı Active Directory. Administr´ator mˇel k dispozici soubor ve form´atu Microsoft Excel, obsahuj´ıc´ı sloupce jm´eno, pˇr´ıjmen´ı, login, heslo a platnost, jehoˇz pomoc´ı v kombinaci s VBA skriptem zav´adˇel uˇzivatele do Active Directory. Neexistoval vˇsak unik´atn´ı kl´ıˇc, podle kter´eho by ˇslo pˇriˇradit uˇzivatel˚ um v datab´azi odpov´ıdaj´ıc´ı login a heslo. Byl tak vytvoˇren SQL skript, kter´ y pˇrid´aval poloˇzk´am v datab´azi nejdˇr´ıve pˇres kl´ıˇc pˇr´ıjmen´ı, jm´eno“ a pak pˇres kl´ıˇc ” pˇr´ıjmen´ı“ login a heslo pro Active Directory. T´ımto krokem se vyˇreˇsila vˇetˇsina uˇzi” vatel˚ u (celkem se z Bakal´aˇr˚ u naˇcetlo pˇribliˇznˇe 900 osob, z toho okolo 500 aktivn´ıch – ty byly br´any v potaz). Zb´ yvalo vyˇreˇsit duplicity (pˇribliˇznˇe 20 uˇzivatel˚ u, ˇreˇseno ruˇcnˇe) a uˇzivatele, kteˇr´ı se nesp´arovali (zbytek, pomˇernˇe velk´a ˇca´st, opˇet ruˇcnˇe). Zde bylo vidˇet, ˇze pˇri pouh´em ruˇcn´ım zakl´ad´an´ı uˇzivatel˚ u do jednoho excelovsk´eho
21
´ 5. IMPLEMENTACE NASTROJE
5.1 V´ yvoj aplikace
souboru doch´azelo, i pˇres peˇclivost administr´atora, k chyb´am a pˇreklep˚ um stejnˇe jako k duplicit´am (dvoj´ı aˇz troj´ı loginy). Nakonec tedy byly k dispozici u ´daje pro synchronizaci do Active Directory, pokraˇcovalo se napojen´ım samotn´eho Active Directory popsan´em kapitole 6 Integrace aplikac´ı.
5.1.3
Dalˇ s´ı v´ yvoj
Pro v´ yvojov´e prostˇred´ı bylo nutn´e co nejv´ıce nasimulovat produkˇcn´ı prostˇred´ı, potˇrebn´ y tak byl Microsoft Windows Server pov´ yˇsen´ y na dom´enov´ y ˇradiˇc. Byla zvolena forma virtualizace, kde se pˇres program VirtualBox server nainstaloval, nastavil a rozbˇehl. Pak uˇz nic nebr´anilo pˇrenosu dat z datab´aze INUM do Active Directory. Vˇsem objekt˚ um v Active Directory bylo pˇrid´ano do n´azvu _dev na znamen´ı, ˇze se jedn´a o v´ yvojovou verzi aplikace. Zb´ yvalo naprogramovat webov´e rozhran´ı. Pro tyto u ´ˇcely byl pouˇzit projekt Twitter Bootstrap v kombinaci se ˇsablonovac´ım jazykem Freemarker, kter´ y velmi napomohl ke snadn´e implementaci vizualizace datab´azov´ ych dat. Dalˇs´ım nutn´ ym krokem bylo tak´e zabezpeˇcit pˇr´ıstup k aplikaci pˇrihl´aˇsen´ım pomoc´ı Spring Security. K aplikaci INUM maj´ı pˇr´ıstup pouze administr´atoˇri. Ti m˚ uˇzou osob´am, kter´e se synchronizuj´ı z Bakal´aˇr˚ u do aplikace, na webov´em rozhran´ı upravovat pouze ty u ´daje, kter´e nejsou v Bakal´aˇr´ıch (jako napˇr´ıklad platnost v dom´enˇe, login a heslo do dom´eny – pozor, ze specifikace odliˇsn´ y login do Bakal´aˇr˚ u a do Active Directory), z toho d˚ uvodu, ˇze by se data pravidelnˇe pˇrepisovala daty z Bakal´aˇr˚ u; ruˇcnˇe pˇridan´ ym extern´ım osob´am lze upravovat vˇse. Na poˇz´ad´an´ı z´akazn´ıka byly pˇridˇel´any funkcionality webov´eho rozhran´ı, jako napˇr´ıklad moˇznost tisknout sestavu login a heslo pro konkr´etn´ı osobu nebo seznam osob (tˇr´ıda, skupina) nebo r˚ uzn´e seznamy, napˇr. osob s duplik´atn´ımi ˇc´ısly ˇcip˚ u, pˇr´ıpadnˇe vyhled´av´an´ı v objektech. Na webov´em rozhran´ı je moˇznost spustit tlaˇc´ıtkem jak hromadnou synchronizaci vˇsech osob, tak jednotliv´e osoby, a to v obou smˇerech Bakal´aˇri-INUM a INUM-Active Directory. Na obr´azku 5.3 je uk´azka jedn´e z obrazovek webov´eho rozhran´ı aplikace INUM.
22
´ 5. IMPLEMENTACE NASTROJE
5.1 V´ yvoj aplikace
Obr´azek 5.3: Screenshot webov´eho rozhran´ı aplikace
23
´ 5. IMPLEMENTACE NASTROJE
5.2
5.2 Testov´an´ı
Testov´ an´ı
Testov´an´ı prob´ıhalo jiˇz v prostˇred´ı z´akazn´ıka, pˇribliˇznˇe dva mˇes´ıce v intervalu listopad-prosinec 2013. Aplikace INUM uˇz byla napojena pˇr´ımo na produkˇcn´ı datab´azi programu Bakal´aˇri, aby se ale neovlivnil chod IT proces˚ u ˇskoly, v Active Directory byla vytvoˇrena organizaˇcn´ı jednotka (OU) Test a vˇsechny objekty byly synchronizov´any do n´ı s pˇr´ıponou n´azvu _test - nedoch´azelo tak ke konflikt˚ um s jiˇz existuj´ıc´ımi objekty v AD. Na testovac´ı OU bylo nastaveno napojen´ı aplikace Moodle, kter´a t´eˇz bˇeˇzela v testovac´ım reˇzimu. SafeQ zat´ım kv˚ uli nejist´ ym v´ ysledk˚ um integrace napojov´ano nebylo. V souˇcinnosti s administr´atorem z´akazn´ıka se ladilo chov´an´ı programu, analyzovala se pˇren´aˇsen´a data a opravovaly se pˇr´ıpadn´e chyby.
5.3
Produkˇ cn´ı verze
Pˇri nasazov´an´ı produkˇcn´ı verze aplikace staˇcilo pˇrekonfigurovat informaci v datab´azi na prostˇred´ı z TEST na PRODUCTION a zmˇenit opˇet v konfiguraˇcn´ıch poloˇzk´ach umist’ov´an´ı objekt˚ u v r´amci adres´aˇre Active Directory. Objekty se pak zaˇcaly synchronizovat s produkˇcn´ımi daty. Po u ´spˇeˇsn´em pˇrechodu na produkˇcn´ı verzi integraˇcn´ı aplikace se pˇrenastavil Moodle tak´e na produkˇcn´ı data a SafeQ bylo nakonfigurov´ano pro synchronizaci s Active Directory, jak je pops´ano v kapitole 6 Integrace aplikac´ı. Jako aplikaˇcn´ı server pro produkˇcn´ı prostˇred´ı slouˇz´ı kontejner Apache Tomcat. Cel´a aplikace bˇeˇz´ı na ˇskoln´ım serveru v Tˇreb´ıˇci, kde je nainstalov´an operaˇcn´ı syst´em Microsoft Windows Server 2012 R2. Jin´ y server, kter´ y slouˇz´ı jako dom´enov´ y kontroler, je vybaven operaˇcn´ım syst´emem Microsoft Windows Server 2003 a spr´avcem emailov´ ych schr´anek Microsoft Exchange Server 2003. Nasazov´an´ı aplikace do provozu muselo b´ yt provedeno dvakr´at, protoˇze v p˚ uvodn´ım stavu n´am byl poskytnut server se star´ ymi Windows 2003, v p˚ ulce ledna 2014 se potom z technick´ ych d˚ uvod˚ u nasazoval nov´ y server s operaˇcn´ım syst´emem Windows 2012 R2.
24
6 | Integrace aplikac´ı V n´asleduj´ıc´ıch sekc´ıch je detailnˇe pops´ana integrace jednotliv´ ych aplikac´ı, konkr´etnˇe zp˚ usob jak prob´ıhala, kter´e probl´emy se pˇri n´ı vyskytly, jak musely b´ yt aplikace pro komunikaci nastaveny a dalˇs´ı pˇrev´aˇznˇe technick´e u ´daje.
6.1
Integrace - Bakal´ aˇ ri
Aplikace Bakal´aˇri byla v kapitole Anal´ yza prostˇred´ı definov´ana jako prim´arn´ı producent dat, proto bylo napojen´ı datov´eho zdroje na integraˇcn´ı aplikaci prioritou. Bakal´aˇri na ˇskole v Tˇreb´ıˇci maj´ı sv´a data uchov´ana v DBF souborech (jeˇstˇe jsou verze programu, kter´e pouˇz´ıvaj´ı MSSQL datab´aze - Microsoft SQL Server), bylo tedy nutn´e naj´ıt vhodn´ y n´astroj, kter´ y dok´aˇze ˇc´ıst DBF soubory a operovat s nimi v prostˇred´ı jazyku Java. Existuje velk´e mnoˇzstv´ı open-source Java knihoven pro ˇcten´ı a z´apis DBF soubor˚ u, napˇr´ıklad DANS DBF Library 18 nebo jdbf 19 , jejich probl´em je vˇsak individua´ln´ı pˇr´ıstup k dan´emu souboru, tj. v jeden okamˇzik lze pˇristupovat pouze k jednomu souboru, nelze tak prov´adˇet v´ ybˇer pˇres v´ıce soubor˚ u, jako jsme zvykl´ı pˇri dotazov´an´ı na data pˇres SQL - Structured Query Language (JOIN, neboli spojen´ı tabulek - v´ ybˇer z v´ıce tabulek). Vzhledem k povaze dat v aplikaci Bakal´aˇri, kde se ˇcasto vyskytuj´ı vazby mezi jednotliv´ ymi entitami jako napˇr´ıklad ˇza´k-tˇr´ıda, ˇza´k-skupina, skupina-tˇr´ıda a jin´e, bylo vhodn´e naj´ıt alternativu umoˇznuj´ıc´ı dotazov´an´ı nejl´epe pr´avˇe pˇres SQL. Takov´eho v´ ysledku lze dos´ahnout pomoc´ı JDBC-to-ODBC bridge (mostu). ODBC (Open Database Connectivity) je obecn´e rozhran´ı definuj´ıc´ı pˇristupov´an´ı k datab´azov´ ym zdroj˚ um. V´ yvoj´aˇri ODBC maj´ı za c´ıl vytvoˇrit rozhran´ı nez´avisl´e na pouˇzit´em datab´azov´em syst´emu a operaˇcn´ım syst´emu. JDBC (Java Database Connectivity) 18 19
URL: http://dans-dbf-lib.sourceforge.net/ URL: https://github.com/iryndin/jdbf
25
6. INTEGRACE APLIKAC´I
6.1 Integrace - Bakal´aˇri
je rozhran´ı pro programovac´ı jazyk Java, kter´e poskytuje metody pro dotazov´an´ı a zmˇenu dat v datab´az´ıch, hlavnˇe pak relaˇcn´ıch. JDBC-to-ODBC bridge pˇrin´aˇs´ı pˇr´ıstup v JVM (Java Virtual Machine) prostˇred´ı pro jak´ ykoliv datab´azov´ y zdroj dosaˇziteln´ y pomoc´ı ODBC rozhran´ı.[11] Bylo by samozˇrejmˇe v´ yhodnˇejˇs´ı vyuˇz´ıt jen JDBC rozhran´ı bez pouˇz´ıt´ı JDBC-to-ODBC bridge, takov´e ovladaˇce se vˇsak nepovedlo naj´ıt v bezplatn´e verzi, existuj´ı jen placen´e verze jako napˇr´ıklad StelsDBF.20 Ke ˇcten´ı (i z´apisu) do DBF soubor˚ u uˇz pak staˇc´ı nainstalovat na server, na kter´em bˇeˇz´ı aplikace, ovladaˇc Microsoft Visual FoxPro ODBC Driver21 . Ovladaˇc je naps´an pro 32b (bitov´e) operaˇcn´ı syst´emy. Prostˇred´ı z´akazn´ıka vˇsak disponuje 64b operaˇcn´ım syst´emem, tento probl´em se d´a vyˇreˇsit pouˇzit´ım st´avaj´ıc´ı 32b verze ovladaˇce s t´ım omezen´ım, ˇze cel´a integraˇcn´ı aplikace bude spuˇstˇena pomoc´ı 32b JVM, podrobnˇeji viz http://saltydogllc.com/?p=356.V integraˇcn´ı aplikaci je pot´e nutn´e uv´est n´asleduj´ıc´ı konfiguraci JDBC zdroje:
"Url"="jdbc:odbc:Driver={Microsoft Visual FoxPro Driver}; SourceType=DBF; SourceDB=d:/dev/inum/bakalari/evid/data; Exclusive=No;Collate=Machine;NULL=NO; DELETED=NO;BACKGROUNDFETCH=NO;" "DriverClassName"="sun.jdbc.odbc.JdbcOdbcDriver" "ConnectionProperties"="charSet=WINDOWS-1250" Obsah "Url" je takzvan´ y connection string (ˇretˇezec k pˇripojen´ı ke zdroji), urˇcuje kter´ y ovladaˇc se m´a k pˇripojen´ı pouˇz´ıt (jiˇz v´ yˇse zmiˇ novan´ y Microsoft Visual FoxPro Driver) a hlavnˇe cesta ke sloˇzce, ve kter´e jsou uloˇzeny DBF soubory, m˚ uˇze se jednat 22 o cestu k m´ıstn´ı sloˇzce nebo cestu v s´ıti. "DriverClassName" je n´azev Java tˇr´ıdy urˇcuj´ıc´ı pouˇz´ıvan´ y JDBC ovladaˇc a "ConnectionProperties" definuje specifick´e parametry pˇripojen´ı, v tomto pˇr´ıpadˇe jak´e pouˇz´ıt k´odov´an´ı pro ˇcten´ı a z´apis do DBF. Pˇred pouˇzit´ım tohoto k´odov´an´ı byl probl´em s ˇceskou diakritikou napˇr´ıklad ve jm´enech osob. 20
URL: http://www.csv-jdbc.com/stels_dbf_jdbc.htm Dostupn´ y z http://download.microsoft.com/download/vfoxodbcdriver/Install/6.1/ W9XNT4/EN-US/VFPODBC.msi 22 V´ıce o connection strings na http://www.connectionstrings.com/visual-foxpro/ nebo http://www.devlist.com/ConnectionStringsPage.aspx 21
26
6. INTEGRACE APLIKAC´I
6.2 Integrace - Active Directory
T´ımto je vytvoˇreno spojen´ı do datab´aze aplikace Bakal´aˇri a lze pak jednoduˇse ps´at SQL dotazy pro z´ısk´an´ı potˇrebn´ ych dat, napˇr´ıklad n´asleduj´ıc´ı dotaz vr´at´ı seznam vˇsech skupin vˇcetnˇe potˇrebn´ ych parametr˚ u: SELECT g.KOD_TRID clazz_id, c.ZKRATKA clazz_shortcut, g.KOD_SKUP group_id, g.CLENOVE members, g.NAZEV name, g.SKOLNI_ROK school_year, g.ZKRATKA shortcut, g.FILTR sql_filter, g.POCET_ZAKU student_count, g.TYP type FROM dbf/SKUPINA.DBF g LEFT JOIN dbf/TRIDY.DBF c ON g.KOD_TRID = c.KOD_TRID ORDER BY clazz_shortcut; Klauzule FROM dbf/SKUPINA.DBF g a LEFT JOIN dbf/TRIDY.DBF c obsahuje pˇr´ım´e odkazy na DBF soubory, ze kter´ ych je ˇcteno, a to relativnˇe v˚ uˇci cestˇe zadan´e v connection stringu. Ze Spring Framework je pak vyuˇz´ıv´an JDBCTemplate a jeho metody jako napˇr. jdbcTemplate.query(sqlGroups, new BakalariGroupMapper()), kter´a v´ ysledek v´ yˇse uveden´eho SQL pˇr´ıkazu pˇremapuje na seznam Java objekt˚ u definovan´ ych ve tˇr´ıdˇe BakalariGroupMapper.
6.2
Integrace - Active Directory
Integrace Active Directory byla jednoduˇsˇs´ı neˇz integrace softwaru Bakal´aˇri, protoˇze byl pouˇzit projekt Spring LDAP verze 1.3.2.RELEASE, kter´ y znaˇcnˇe ulehˇcuje implementaci, konfiguraci a v´ ymˇenu dat mezi integraˇcn´ı aplikac´ı INUM a dom´enov´ ym ˇradiˇcem. Pro konfiguraci pˇr´ıstupu k serveru s Active Directory je nutn´e v souboru 27
6. INTEGRACE APLIKAC´I
6.2 Integrace - Active Directory
/src/main/filters/production_filter.properties (respektive pˇri v´ yvoji a testov´an´ı v souboru /src/main/filters/development_filter.properties) uv´est n´asleduj´ıc´ı u ´daje: cfg.ldap.url=ldaps://192.168.56.102:636 cfg.ldap.base=dc=inum,dc=development cfg.ldap.readonly=false cfg.ldap.user.dn={DN administr´ atora} cfg.ldap.user.password={heslo administr´ atora} Vˇsechny parametry jsou povinn´e, cfg.ldap.base ud´av´a b´azi v˚ uˇci kter´e budou prob´ıhat n´asledn´a vyhled´av´an´ı a zmˇeny objekt˚ u v AD, cfg.ldap.readonly zda bude z AD pouze ˇcteno nebo se bude i zapisovat (false = i z´apis) a cfg.ldap.user.dn s cfg.ldap.user.password jsou pˇr´ıstupov´e u ´daje administr´atorsk´eho u ´ˇctu, jimiˇz se pˇrihlaˇsuje integraˇcn´ı aplikace. Nejd˚ uleˇzitˇejˇs´ım u ´dajem je cfg.ldap.url, tedy IP adresa nebo jm´eno serveru, na kter´em je nainstalov´an dom´enov´ y ˇradiˇc. Jeho ˇca´st ldaps (a tak´e ˇc´ıslo portu 636 ) mimo jin´e definuje, ˇze se bude pˇripojovat pˇres zabezpeˇcen´ y (LDAPS - anglicky LDAP over SSL) protokol, kv˚ uli pˇren´aˇsen´ı hesel uˇzivatelsk´ ych u ´ˇct˚ u do AD se jedn´a o nezbytnou ˇca´st, pokud by totiˇz byl pouˇzit nezabezpeˇcen´ y protokol (klasick´ y LDAP), Active Directory nepovol´ı pˇren´aˇsen´ı hesel. K pouˇzit´ı LDAPS je potˇreba nainstalovat SSL (Secure Sockets Layer) certifik´at dom´enov´eho kontroleru do u ´loˇziˇstˇe Javy. K tomuto u ´ˇcelu byl pouˇzit n´astroj InstallCert23 , podrobn´ y popis postupu instalace certifik´atu lze nal´ezt na http://www.opentox.org/tutorials/ q-edit/how-to-install-ssl-certificates/. Po tomto nastaven´ı pak staˇc´ı uv´est v XML souboru aplikaˇcn´ıho kontextu integraˇcn´ı aplikace n´asleduj´ıc´ı Java objekty (Beans):
<property name="url" value="${cfg.ldap.url}"/> <property name="base" value="${cfg.ldap.base}"/> <property name="userDn" value="${cfg.ldap.user.dn}"/> <property name="password" value="${cfg.ldap.user.password}"/> 23
Dostupn´ y z https://code.google.com/p/java-use-examples/source/browse/trunk/src/ com/aw/ad/util/InstallCert.java
28
6. INTEGRACE APLIKAC´I
6.2 Integrace - Active Directory
<property name="baseEnvironmentProperties"> <map> <entry key="java.naming.security.authentication" value="simple"/> <entry key="java.naming.ldap.attributes.binary" value="objectGUID"/> <property name="pooled" value="false"/> <property name="contextSource" ref="ldapContextSource"/> <property name="ignorePartialResultException" value="true"/>
Pomoc´ı objektu ldapTemplate lze n´aslednˇe snadno pˇristupovat a dotazovat se do AD, pˇr´ıkladem m˚ uˇze b´ yt, aby AD vr´atilo seznam vˇsech objekt˚ u typu uˇzivatel s uveden´ ym pˇrihlaˇsovac´ım jm´enem (ldapId je parametr obsahuj´ıc´ı poˇzadovan´e pˇrihlaˇsovac´ı jm´eno):
ldapTemplate.search( "", "(&(objectClass=user)(sAMAccountName=" + ldapId + "))", new LdapPersonContextMapper() ); Pˇr´ıkaz funguje na podobn´em principu jako JDBC template uveden´ y v integraci aplikace Bakal´aˇri, tj. z´ıskanou odpovˇed’ od serveru AD pˇretransformuje na seznam objekt˚ u definovan´ ych ve tˇr´ıdˇe LdapPersonContextMapper. T´ımto zp˚ usobem je integraˇcn´ı aplikace schopna ˇc´ıst data z AD, coˇz je vyuˇz´ıv´ano v k´odu k tomu, aby se zjistilo, jestli dan´ y synchronizovan´ y objekt jiˇz v AD existuje. Existuje-li, pak je urˇceno, ˇze se budou jeho atributy jenom aktualizovat n´asleduj´ıc´ım vol´an´ım metody: 29
6. INTEGRACE APLIKAC´I
6.2 Integrace - Active Directory
ldapTemplate.modifyAttributes( {DN objektu z´ ıskan´ eho ˇ cten´ ı,}, {mapa kl´ ıc ˇ-hodnota atribut˚ u ke zmˇ enˇ e} ); a pokud objekt v AD jeˇstˇe neexistuje, vol´an´ım n´asleduj´ıc´ı metody se vytvoˇr´ı: ldapTemplate.bind( {DN nov´ eho objektu}, null, {mapa kl´ ıc ˇ-hodnota atribut˚ u k vytvoˇ ren´ ı} ); Pˇri vytv´aˇren´ı nov´ ych objekt˚ u je tˇreba db´at na unik´atnost jejich DN, jinak Active Directory nepovol´ı zaps´an´ı. V datab´azi INUM je pro tento u ´ˇcel vedeno pole ldap_id pro entity Person (osoba - ˇza´k, student, uˇcitel) a Group (skupina), kter´e je jedineˇcn´e a lze z nˇej snadno sestavit poˇzadovan´e DN. Do Active Directory jsou synchronizov´any u ´daje o osob´ach (jm´ena, adresy, mobiln´ı ˇc´ısla, emaily, ˇc´ısla ˇcip˚ u apod.), u ´daje o zaˇrazen´ı osob (student, ˇz´ak, uˇcitel, extern´ı uˇcitel, extern´ı ˇz´ak) a u ´daje o pˇr´ısluˇsnosti ke skupin´am (tˇr´ıdy, skupiny – podmnoˇziny tˇr´ıd). Kaˇzd´a osoba je samostatn´ ym objektem v Active Directory (objekt user ˇci person), je souˇca´st´ı glob´aln´ı skupiny (objekt group), kter´a ji identifikuje vzhledem k pracovn´ımu zaˇrazen´ı (student, ˇza´k, uˇcitel, extern´ı uˇcitel, extern´ı ˇz´ak; patˇr´ı pr´avˇe do jedn´e takov´e skupiny) a ˇz´aci ˇci studenti jsou pak jeˇstˇe ˇclenov´e jin´ ych skupin (objekt group) podle toho, do kter´e tˇr´ıdy nebo podskupiny tˇr´ıdy patˇr´ı (mohou patˇrit do v´ıce skupin). Dalˇs´ı d˚ uleˇzitou souˇc´ast´ı integrace Active Directory je vytv´aˇren´ı domovsk´ ych adres´aˇr˚ u pro uˇzivatele dom´eny. K tomu velmi dobˇre poslouˇzil n´astroj Powershell 2.0 pro Windows, jak je jiˇz zm´ınˇeno v sekci pojedn´avaj´ıc´ı o Powershellu. K ovl´ad´an´ı skript˚ u napsan´ ych v tomto skriptovac´ım jazyce z Javy slouˇz´ı tˇr´ıda um´ıstˇen´a v cestˇe src\main\java\cz\davidak\utils\PowershellScriptHandler.java, kter´a zvl´ad´a pouˇstˇet skripty zadan´e pˇr´ımo ˇretˇezcem znak˚ u nebo je naˇc´ıtat z konfiguraˇcn´ı poloˇzky aplikace. Zde je uveden pˇr´ıklad, jak se nastavuje pr´avo pln´e kontroly pro administr´atory na konkr´etn´ı sloˇzce pomoc´ı Powershellu: 30
6. INTEGRACE APLIKAC´I
6.2 Integrace - Active Directory
$acl = Get-Acl {cesta ke sloˇ zce} $ruleForAdmins = New-Object System.Security.AccessControl.FileSystemAccessRule( "\Administrators", "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow") $acl.AddAccessRule($ruleForAdmins) Set-Acl $homeFolderPath $acl Tento k´od je uloˇzen v konfiguraci aplikace, lze ho na webov´em rozhran´ı libovolnˇe mˇenit. V sekci o Powershellu je tak´e ˇreˇceno, ˇze nˇekter´e operace s Active Directory nelze pohodlnˇe udˇelat nebo v˚ ubec prov´adˇet z Javy, jeden takov´ y pˇr´ıklad je nastaven´ı nemoˇznosti zmˇeny hesla pro uˇzivatele, coˇz je vzhledem k pravideln´e synchronizaci hesel z integraˇcn´ı aplikace do Active Directory ˇza´douc´ı efekt. Pomoc´ı Powershellu a sady pˇr´ıkaz˚ u Quest pro Powershell se tohoto nastaven´ı d´a dos´ahnout n´asleduj´ıc´ım zp˚ usobem:
Get-QADUser $personCN -Service "{jm´ eno serveru}" | Set-QADUser -AccountExpires $accountExpires Get-QADUser $personCN -Service "{jm´ eno serveru}" | Add-QADPermission -Account SELF,Everyone -ExtendedRight "User-Change-Password" -Deny -ApplyTo ThisObjectOnly Novˇejˇs´ı verze syst´emu Windows Server (od 2008) maj´ı Powershell nainstalovan´ y v z´akladn´ım nastaven´ı a poskytuj´ı podobnou sadu pˇr´ıkaz˚ u jako n´astroje Quest s t´ım rozd´ılem, ˇze pr´ace s nimi je pohodlnˇejˇs´ı a tohoto konkr´etn´ıho efektu nemoˇznosti zmˇenit heslo lze dos´ahnout jednoduˇsˇs´ı cestou. Posledn´ı d˚ uleˇzitou ˇc´ast´ı, kterou bylo potˇreba pˇri integraci Active Directory vyˇreˇsit, je zakl´ad´an´ı e-mailov´ ych schr´anek pro uˇcitele v prostˇred´ı Microsoft Exchange Server. Tento program ukl´ad´a sv´e nastaven´ı pr´avˇe v dom´enˇe Active Directory, tj. i u ´daje o schr´ank´ach lze naj´ıt mezi atributy AD. Opˇet, pokud bychom operovali s novˇejˇs´ı verz´ı Microsoft Windows Server (2008 a v´ yˇs), bylo by vytv´aˇren´ı schr´anek jednoduch´e pomoc´ı Powershell skript˚ u, v produkˇcn´ım prostˇred´ı je vˇsak nasazen operaˇcn´ı syst´em Windows Server 2003, tak bylo nutn´e naj´ıt alternativn´ı ˇreˇsen´ı. Java 31
6. INTEGRACE APLIKAC´I
6.3 Integrace - Moodle
knihovna s operacemi pro Exchange Server neexistuje, doˇslo se vˇsak k z´avˇeru, ˇze k vytvoˇren´ı schr´anek staˇc´ı do Active Directory pomoc´ı Spring LDAP pˇren´aˇset tyto 4u ´daje - mail, mailNickName, displayName a hlavnˇe homeMDB. Prvn´ı urˇcuje celou e-mailovou adresu vˇcetnˇe zavin´aˇce, druh´ y ˇc´ast adresy pˇred zavin´aˇcem, tˇret´ı jm´eno osoby vlastn´ıc´ı e-mailovou schr´anku a ˇctvrt´ y, nejd˚ uleˇzitˇejˇs´ı, je um´ıstˇen´ı schr´anek v adres´aˇri Active Directory. Cesta k posledn´ımu u ´daji byla z´ısk´ana z anal´ yzy dˇr´ıve vytvoˇren´ ych Exchange u ´ˇct˚ u a je jednou z konfiguraˇcn´ım poloˇzek integraˇcn´ı aplikace. Tento zp˚ usob vytv´aˇren´ı vyplynul z testov´an´ı, inspirac´ı byly tipy ze str´anky 24 SelfADSI .
6.3
Integrace - Moodle
Integrace e-learningov´eho n´astroje Moodle spoˇc´ıvala v nastaven´ı propojen´ı dat s Active Directory. To zahrnuje 2 ˇca´sti - zaprv´e ovˇeˇrov´an´ı pˇrihlaˇsov´an´ı uˇzivatel˚ u do Moodle a zadruh´e synchronizaci glob´aln´ıch skupin (v Moodle naz´ yvan´ ych kohort˚ u) se skupinami vytvoˇren´ ymi v Active Directory z pˇr´ısluˇsnosti ˇz´ak˚ u a student˚ u do tˇr´ıd a skupin tˇr´ıd (z hlediska programu Bakal´aˇri). Prvn´ı ˇca´st je zajiˇstˇena modulem pro Moodle LDAP, screenshot z nastaven´ı tohoto modulu je v pˇr´ıloze B. Princip pˇrihlaˇsov´an´ı uˇzivatel˚ u do Moodle spoˇc´ıv´a v d˚ uvˇeˇre ze strany Moodle k jin´e autoritˇe, v tomto pˇr´ıpadˇe Active Directory. Pokud se uˇzivatel prok´aˇze spr´avn´ ym pˇrihlaˇsovac´ım jm´enem a heslem, Active Directory signalizuje, ˇze uˇzivatel je ovˇeˇren´ y a Moodle ho tedy vpust´ı do sv´eho syst´emu. Pokud Moodle uˇzivatele jeˇstˇe neznal, vytvoˇr´ı pro nˇej z´aznam ve vlastn´ı datab´azi a naˇcte pˇr´ısluˇsn´e informace (e-mailov´a adresa, jm´eno, pˇr´ıjmen´ı), a kdyˇz uˇzivatel patˇr´ı do glob´aln´ı skupiny AD ucitele, udˇel´ı mu roli tv˚ urce kurzu. V prostˇred´ı z´akazn´ıka je nastaveno, ˇze si Moodle neukl´ad´a hesla uˇzivatel˚ u, a tak ovˇeˇrov´an´ı v˚ uˇci Active Directory prob´ıh´a pˇri kaˇzd´em pˇrihlaˇsov´an´ı do Moodle. V´ yhoda tohoto nastaven´ı je, ˇze pokud se zmˇen´ı heslo uˇzivatele v Active Directory, nemus´ı se mˇenit i v Moodle, ale uˇzivatel se automaticky ihned ovˇeˇruje nov´ ym heslem. Synchronizace glob´aln´ıch skupin v Moodle aneb kohort˚ u (anglicky cohorts) je sloˇzitˇejˇs´ı, protoˇze se nejedn´a o standardn´ı plugin jako LDAP. Integrace prob´ıh´a 24
URL: http://www.selfadsi.org/create.htm
32
6. INTEGRACE APLIKAC´I
6.4 Integrace - YSoft SafeQ
pomoc´ı extern´ıho PHP skriptu25 , kter´ y je nutn´e um´ıstit do sloˇzky v adres´aˇri Moodle %MOODLE_HOME%/www/auth/cas. Skript pot´e kaˇzdou noc synchronizuje skupiny s Active Directory a pˇriˇrazuje do nich uˇzivatele ze sv´e intern´ı datab´aze. Tato synchronizace znaˇcnˇe ulehˇcuje pr´aci tv˚ urc˚ um kurz˚ u (uˇcitel´e), kteˇr´ı nemusej´ı ruˇcnˇe pˇridˇelovat ˇza´ky nebo studenty podle pˇr´ısluˇsnosti ke skupin´am, ale pouze pˇri vytv´aˇren´ı kurzu vyberou poˇzadovanou skupinu, pro kterou je kurz urˇcen, a uˇzivatel´e uˇz jsou pˇriˇrazeni automaticky.
6.4
Integrace - YSoft SafeQ
Software pro tisk SafeQ poskytuje tak´e integraˇcn´ı modul pro napojen´ı k Active Directory, jedin´ ym probl´emem bylo tedy urˇcit, kter´e uˇzivatele m´a do sv´e lok´aln´ı datab´aze synchronizovat a pot´e vkl´adat do Active Directory ˇc´ıslo ˇcipu. V´ ybˇer uˇzivatel˚ u se uskuteˇcn ˇuje na z´akladˇe search filteru“ do Active Directory, kter´ y vybere jen ” uˇzivatele, kteˇr´ı maj´ı vyplnˇen atribut ˇc´ıslo ˇcipu a z´aroveˇ n atribut, kter´ y uv´ad´ı, ˇze je dan´a osoba synchronizov´ana s integraˇcn´ım n´astrojem. Active Directory neposkytuje ve sv´em z´akladn´ım sch´ematu ˇza´dn´ y atribut k podobn´ ym u ´ˇcel˚ um jako ˇc´ıslo ˇcipu, a pˇrid´an´ı takov´eho atributu do sch´ematu nen´ı trivi´aln´ım u ´kolem, proto byl pouˇzit bˇeˇzn´ y, ale pro u ´ˇcely ˇskoly nepouˇz´ıvan´ y, atribut title. Dalˇs´ım d˚ uvodem k v´ ybˇeru tohoto atribut je fakt, ˇze ho lze zobrazit v pˇrehledu programu Uˇzivatel´e a poˇc´ıtaˇce sluˇzby Active Directory. Na obr´azku 6.1 je vidˇet jedna z obrazovek nastaven´ı propojen´ı SafeQ na protokol LDAP - Active Directory.
25
domovsk´ a str´ anka https://github.com/patrickpollet/moodle_local_ldap https://tracker.moodle.org/browse/MDL-25011
33
pˇr´ıpadnˇe
6. INTEGRACE APLIKAC´I
6.4 Integrace - YSoft SafeQ
Obr´azek 6.1: Nastaven´ı propojen´ı SafeQ - LDAP, pˇrevzato z [10]
34
7 | Zhodnocen´ı Integraˇcn´ı aplikace INUM je od konce ledna 2014 nasazena v produkˇcn´ım prostˇred´ı z´akazn´ıka, kter´ ym je Vyˇsˇs´ı odborn´a ˇskola a Stˇredn´ı ˇskola veterin´arn´ı, zemˇedˇelsk´a a zdravotnick´a Tˇreb´ıˇc. Od uveden´ı do produkˇcn´ıho provozu pˇr´ıliˇs zmˇen v logice nebo chov´an´ı aplikace neprobˇehlo, nepˇriˇslo se totiˇz na ˇz´adn´e z´avaˇzn´e chyby, kter´e by se musely akutnˇe opravit. Proces zad´av´an´ı uˇzivatel˚ u se znaˇcnˇe zjednoduˇsil, v souˇcasn´e situaci je nutn´e zad´avat data pouze do softwaru Bakal´aˇri, pak uˇz pˇrenos dat mezi integrovan´ ymi aplikacemi prob´ıh´a automaticky. Integraˇcn´ı ˇca´st je hotov´a, obˇcas se vˇsak najdou podnˇety pro zmˇenu. Z ned´avn´ ych pˇr´ıpad˚ u lze uv´est napˇr´ıklad pˇrid´an´ı algoritmu pro hl´ıd´an´ı a upozorˇ nov´an´ı na duplicitn´ı ˇcipy v datab´azi, aby nedoch´azelo k v´ıcen´asobn´emu v´ yskytu a chyb´am plynouc´ım z tˇechto duplik´at˚ u. Tyto n´avrhy jsou postupnˇe zapracov´av´any do aplikace v souladu s poˇzadavky administr´atora v Tˇreb´ıˇci. V souˇcasnosti uˇz se aplikace star´a o v´ ymˇenu dat mezi ˇctyˇrmi hlavn´ımi aplikacemi v produkˇcn´ım prostˇred´ı. Plnˇe nahradila zm´ınˇen´ y VBA skript pro vytv´aˇren´ı uˇzivatel˚ u do Active Directory, nav´ıc administr´ator s´ıtˇe nyn´ı m˚ uˇze proˇcistit samotn´e u ´loˇziˇstˇe, protoˇze uˇz v´ı, kter´e osoby jsou aktivn´ı (synchronizov´any) a kter´e jsou jen poz˚ ustatkem z dˇr´ıvˇejˇs´ı doby. D´ale mohou uˇzivatel´e pˇristupovat do Moodle, staˇc´ı jim k tomu stejn´e pˇrihlaˇsovac´ı u ´daje jako do dom´eny. Jsou zaˇrazeni do sv´ ych kurz˚ u a mohou nyn´ı naplno vyuˇz´ıvat moˇznost´ı e-learningu. SafeQ je tak´e napojen a plnˇe synchronizov´an. Kaˇzdou noc ve 3:15 probˇehne naˇcten´ı informac´ı o ˇza´c´ıch, studentech, uˇcitel´ıch, tˇr´ıd´ach a skupin´ach do intern´ı datab´aze integraˇcn´ı aplikace, jeˇz zabere velmi m´alo ˇcasu, necelou minutu. N´asleduje ve 3:45 aktualizace dat z datab´aze do adres´aˇrov´e sluˇzby Active Directory, kter´a uˇz trv´a d´ele, pˇribliˇznˇe 40 minut, a to protoˇze prob´ıh´a spouˇstˇen´ı Powershell skript˚ u a tak´e protoˇze synchronizace prob´ıh´a u ´plnˇe na vˇsech uˇzivatel´ıch, vˇcetnˇe neaktivn´ıch. Z tohoto pohledu probˇehne v nejbliˇzˇs´ı dobˇe zmˇena algoritmu pro v´ ybˇer uˇzivatel˚ u, kteˇr´ı se maj´ı synchronizovat, aby se podstatnˇe sn´ıˇzila doba pˇrenosu. Na druhou stranu se nepˇredpokl´ad´a r˚ ust objemu dat, takˇze se aktu´aln´ı stav d´a povaˇzovat za konstantn´ı, ˇcasov´ y interval by se tedy do budoucna 35
7. ZHODNOCEN´I
7.1 V´ ysledky
nemˇel zvyˇsovat. Pˇren´aˇsej´ı se data o uˇzivatel´ıch a skupin´ach, ke kter´ ym uˇzivatel´e pˇr´ısluˇs´ı - tˇr´ıdy pro ˇza´ky a studenty, a pak tak´e glob´aln´ı skupiny rozdˇeluj´ıc´ı uˇzivatele na uˇcitele, extern´ı uˇcitele, studenty, ˇza´ky a dalˇs´ı extern´ı osoby. Synchronizac´ı vˇsech uˇzivatel˚ u se dos´ahlo efektu, ˇze administr´ator ˇskoly snadno urˇc´ı, kter´e osoby jsou synchronizov´any (tj. jsou v datab´azi INUM) a kter´e osoby uˇz by se v Active Directory nemˇely vyskytovat (jsou poz˚ ustatkem z p˚ uvodn´ı ruˇcn´ıho a nekontrolovan´eho zakl´ad´an´ı uˇzivatel˚ u). Pot´e prob´ıh´a proces synchronizace glob´aln´ıch skupin (kohort˚ u) a informac´ı o uˇzivatel´ıch do datab´aze Moodle, o jeho ˇcasov´an´ı se star´a pl´anovaˇc zakomponovan´ y v elearningov´em syst´emu - zaˇca´tek je ve 4:00, pr´avˇe proto by mˇelo smysl zkr´atit ˇcas synchronizace do Active Directory nebo zmˇenit ˇcasov´an´ı. Synchronizace Ysoft SafeQ je plnˇe v reˇzii softwaru, je iniciov´ana ze strany programu, ne extern´ıho syst´emu.
7.1
V´ ysledky
Integraˇcn´ı aplikace ukl´ad´a zpr´avy o sv´e ˇcinnosti do logu, kter´ y je uchov´av´an po dobu 30 posledn´ıch dn´ı. Takov´e logy existuj´ı dva, jeden klasick´ y souborov´ y log a druh´ y jen pro v´ yznamn´e situace, kter´ y je nazv´an syst´emov´ y log - ten je uloˇzen v datab´azi. Pokud nastane v aplikaci v´ yjimka ˇci chyba, odeˇsle se e-mail s textem chyby do schr´anek uˇzivatel˚ u nastaven´ ych jako administr´atoˇri aplikace. Posledn´ı chyba nastala 4.2.2014, takˇze uˇz 3 mˇes´ıce neust´al´eho provozu bˇeˇz´ı aplikace bezchybnˇe. V´ ysledn´a aplikace se jmenuje N´astroj pro integraci uˇzivatelsk´ ych u ´ˇct˚ u, proto je v tabulce 7.1 uveden pˇrehled poˇct˚ u synchronizovan´ ych uˇzivatelsk´ ych u ´ˇct˚ u obsaˇzen´ ych v datab´azi n´astroje. Vˇsechny entity aˇz na extern´ı ˇz´aky jsou do datab´aze naˇcteny z programu Bakal´aˇri, extern´ı ˇza´ci se zad´avaj´ı pˇres webov´e rozhran´ı aplikace.
7.2
Budouc´ı v´ yvoj
V´ yvoj integraˇcn´ı aplikace nen´ı zdaleka u konce, naopak se pl´anuje intenzivn´ı rozvoj. Ten by mohl spoˇc´ıvat v napojen´ı ˇc´ım d´al vˇetˇs´ıho mnoˇzstv´ı aplikac´ı, vytvoˇren´ı konektor˚ u na nˇe a moˇznosti vˇetˇs´ı konfigurovatelnosti aplikace, tak aby se pˇri 36
7. ZHODNOCEN´I
7.2 Budouc´ı v´ yvoj
Tabulka 7.1: Synchronizovan´e u ´ˇcty (stav k 4.5.2014) objekt poˇ cet aktivn´ıch poˇ cet neaktivn´ıch ˇz´ak 354 91 student 138 156 uˇcitel 62 81 extern´ı uˇcitel 22 2 extern´ı ˇza´k 79 0 celkem 655 330 pˇr´ıpadn´em nasazen´ı do jin´eho prostˇred´ı nemusel pˇr´ıliˇs mˇenit zdrojov´ y k´od. Potenci´al pro integraci jin´ ych program˚ u je d´ıky robustnosti aplikace postaven´e na Spring Framework velk´ y, at’ uˇz se bude jednat o zb´ yvaj´ıc´ı aplikace v prostˇred´ı z´akazn´ıka (Karas, J´ıdelna, Doch´azka) nebo napˇr´ıklad integrace n´astroj˚ u od firmy Google (Google Apss - kalend´aˇr, kontakty, e-maily). INUM totiˇz jiˇz nyn´ı obsahuje velk´e mnoˇzstv´ı informac´ı o uˇzivatel´ıch, tud´ıˇz uˇz vˇetˇsinou staˇc´ı jen naj´ıt zp˚ usob jak do c´ılov´e aplikace data synchronizovat (jak ji integrovat).
37
8 | Z´ avˇ er N´astroj pro integraci uˇzivatelsk´ ych u ´ˇct˚ u bezprobl´emovˇe funguje v produkˇcn´ım prostˇred´ı ˇskoly po dobu v´ıce jak tˇrech mˇes´ıc˚ u, od konce ledna 2014. Aplikace rapidnˇe zlepˇsuje pˇrehlednost a poˇr´adek dat, velmi sniˇzuje redundanci jejich zad´av´an´ı do r˚ uzn´ ych syst´em˚ u, zjednoduˇsuje spr´avu, zamezuje chyb´am vznikaj´ıc´ım pˇri ruˇcn´ım vkl´ad´an´ı informac´ı a hlavnˇe zvyˇsuje bezpeˇcnost prostˇred´ı, zamezuje totiˇz pˇr´ıstup do aplikac´ı uˇzivatel˚ um, kteˇr´ı uˇz nejsou souˇca´st´ı ˇskoly. V souˇcasn´e dobˇe existuj´ı v prostˇred´ı pouze 2 vstupn´ı body pro zad´av´an´ı dat - software Bakal´aˇri a samotn´a integraˇcn´ı aplikace. Kaˇzd´a integrovan´a aplikace nyn´ı obsahuje aktu´aln´ı, pravidelnˇe synchronizovan´e u ´daje a informace jen potˇrebn´e pro sv˚ uj bˇeh, ˇza´dn´e nadbyteˇcnosti. V r´amci nasazen´ı aplikace probˇehlo i ˇskolen´ı administr´atora na ovl´ad´an´ı a konfiguraci n´astroje. Z´akazn´ık projevil spokojenost s v´ ysledkem integrace, d˚ ukazem m˚ uˇze b´ yt objedn´avka na integraci zbyl´ ych ˇskoln´ıch syst´em˚ u, kter´e byly vylouˇceny z prvn´ı f´aze projektu. Realizace t´eto ˇc´asti by mˇela probˇehnout v nejbliˇzˇs´ıch t´ ydnech. INUM m´a velk´ y potenci´al rozvoje a implementace do jin´ ych prostˇred´ı, vˇetˇsinou stˇredn´ıch ˇskol, kter´e se pot´ ykaj´ı se stejn´ ymi probl´emy jako ˇskola v Tˇreb´ıˇci. Nasazen´ı do ciz´ıho prostˇred´ı bude sp´ıˇse ot´azkou konfigurace, neˇz programov´an´ı nov´e logiky aplikace, n´astroj byl navrˇzen s d˚ urazem na pˇrenositelnost. Byl pouˇzit multiplatformn´ı jazyk Java a projekty jako Spring Framework ˇci Apache Tomcat, kter´e lze pouˇz´ıt jak v prostˇred´ı Windows, tak i napˇr´ıklad na serverech pod distribuc´ı Linux. Z osobn´ıho hlediska povaˇzuji za pˇr´ınos moˇznost zkusit si navrhnout a naprogramovat n´astroj pro skuteˇcn´eho z´akazn´ıka a spolupracovat s lidmi pohybuj´ıc´ımi se v IT prostˇred´ı. Musel jsem se kv˚ uli implementaci nauˇcit pracovat s velk´ ym mnoˇzstv´ım n´astroj˚ u a mysl´ım, ˇze budu schopen v budoucnu tyto cenn´e zkuˇsenosti vyuˇz´ıt u jin´ ych projekt˚ u.
38
Seznam pouˇ zit´ ych zkratek AD - Active Directory DBF - dBase file DN - Distinguished Name HTTP - Hypertext Transfer Protocol INUM - Integrated User Manager JDBC - Java Database Connectivity JVM - Java Virtual Machine LDAP - Lightweight Directory Access Protocol ODBC - Open Database Connectivity ORM - Object/Relational Mapping POJO - Plain Old Java Object SQL - Structured Query Language SSL - Secure Sockets Layer URL - Uniform Resource Locator VBA - Visual Basic for Applications
Literatura [1] Alex, B.; Taylor, L.: Spring Security Reference Documentation. Spring Security, 2013, [online]. [navˇst´ıveno 27.4.2014]. Dostupn´e z: http://docs.spring.io/spring-security/site/docs/3.1.4.RELEASE/ reference/springsecurity.html [2] Arthursson, M.; Sandberg, U.; Dalquist, E.; aj.: Spring LDAP - Reference Documentation. Spring LDAP, 2014, [online]. [navˇst´ıveno 27.4.2014]. Dostupn´e z: http://docs.spring.io/spring-ldap/docs/1.3.2.RELEASE/reference/ html/ [3] Bakal´aˇri: Evidence, Klasifikace, Vysvˇedˇcen´ı. 2014, [online]. [navˇst´ıveno 17.4.2014]. Dostupn´e z: http://www.bakalari.cz/evidence.aspx [4] Hibernate: Hibernate Reference Documentation. Hibernate, 2014, [online]. [navˇst´ıveno 27.4.2014]. Dostupn´e z: http://docs.jboss.org/hibernate/orm/4. 2/manual/en-US/html/ [5] Johnson, R.; Hoeller, J.; Donald, K.; aj.: Spring Framework Reference Documentation. Spring Framework, 2013, [online]. [navˇst´ıveno 27.4.2014]. Dostupn´e z: http://docs.spring.io/spring/docs/3.2.4.BUILD-SNAPSHOT/ spring-framework-reference/htmlsingle/#spring-introduction [6] Malina, P.: Jak vyzr´at na Powershell 2.0. Brno: Computer Press. a.s., 2010, ISBN 978-80-251-2732-2. [7] Moodle: About Moodle. Moodle project, Bˇrezen 2014, [online]. [navˇst´ıveno 27.4.2014]. Dostupn´e z: http://docs.moodle.org/26/en/About_Moodle [8] stackoverflow: How to manage AD ACLs using Java. stackoverflow, 2013, [online]. [navˇst´ıveno 20.4.2014]. Dostupn´e z: http://stackoverflow.com/ questions/12784606/how-to-manage-ad-acls-using-java [9] Stanek, W. R.: Active Directory - Kapesn´ı r´adce administr´atora. Brno: Computer Press. a.s., 2009, ISBN 978-80-251-2555-7.
[10] Vyb´ıral, F.: SafeQ: pˇr´ıruˇcka administr´atora v3.0. Y Soft, s.r.o., 2005, [online]. [navˇst´ıveno 27.4.2014]. Dostupn´e z: https://helpdesk.minolta.cz/ hds/DownloadFile.jsp?id=4422 [11] Wikipedia: Java Database Connectivity. Bˇrezen 2014, [online]. [navˇst´ıveno 27.4.2014]. Dostupn´e z: http://en.wikipedia.org/wiki/Java_Database_ Connectivity
A | Kompletn´ı datov´ y model
B | Integrace Moodle s AD
C | Obsah pˇ riloˇ zen´ eho CD / install.............................sloˇzka s implementovan´ ym n´astrojem foxpro-oledb.....instalaˇcn´ı bal´ıˇcek s ovladaˇci pro ˇcten´ı z DBF soubor˚ u install-cert.....Java n´astroj pro instalaci certifik´atu do u ´loˇziˇstˇe JVM UnlimitedJCEPolicyJDK7.........bal´ıˇcek pro JVM, zprovoznˇen´ı Jasypt apache-tomcat-7.0.53-windows-x86.zip...............webov´ y server other....................................................ostatn´ı soubory sync_cohorts.php ............................ PHP skript pro Moodle text.....................................sloˇzka s textem bakal´aˇrsk´a pr´ace inum.pdf .................................. text pr´ace ve form´atu PDF latex...................sloˇzka se zdrojov´ ymi soubory ve form´atu LATEX tool ................................ sloˇzka s implementovan´ ym n´astrojem inum.................................zdrojov´e k´ody integraˇcn´ı aplikace instalace.txt............................n´avod pro instalaci n´astroje