Vysoká škola ekonomická v Praze Fakulta informatiky a statistiky Vyšší odborná škola informačních služeb v Praze
Martin David CMS Joomla! a protokol LDAP Bakalářská práce
2009
(Volná strana pro vložení zadávacího listu)
Prohlašuji, že jsem bakalářskou práci na téma „CMS Joomla! a protokol LDAP“ zpracoval samostatně a použil pouze zdrojů, které cituji a uvádím v seznamu použité literatury.
V Praze dne 13.8.2009
............................. Martin David
Rád bych tímto poděkoval vedoucímu práce panu Ing. Davidu Klimánkovi Ph.D. za možnosti konzultace a jeho cenné rady při tvorbě práce.
Anotace Cílem této bakalářské práce je analyzování a implementace redakčního systému Joomla! a dále zjednodušení autentizace uživatelů za pomoci protokolu LDAP mezi systémy Novell NetWare, CMS Joomla! a LMS Moodle. V teoretické části práce je podrobně analyzován redakční systém Joomla!, je předložen ucelený přehled o nejdůležitějších aspektech nasazení tohoto systému. Pro účely práce byla vytvořena webová prezentace pro Erasmus na VOŠIS, na které je vysvětlena práce se systémem, což při absenci české literatury na dané téma může být užitečné. Na závěr práce je krátce popsán protokol LDAP a sjednocené přihlašování. V praktické části je uveden postup instalace Novell NetWare 6.5, návrh konfigurace LDAP serveru, vytvoření adresářového stromu a implementace sjednocené autentizace uživatelů mezi systémy Joomla! a Moodle za pomoci protokolu LDAP. Z přiloženého DVD je možné stáhnout ukázku práce v podobě zdrojových, databázových souborů CMS Joomla! a LMS Moodle a zároveň předpřipraveného virtualizovaného obrazu obsahující nakonfigurovaný LDAP server, ve kterých je možné prohlížet veškerá nastavení.
Annotation The goal of this bachelor thesis is to analyze and implement content management system Joomla! and simplify users authentication process based on LDAP protocol among Novell NetWare, CMS Joomla! and LMS Moodle, as well. In the theoretical part of the thesis is analyzed in detail CMS Joomla!, also is presented a comprehensive overview of the most important aspects of the system deployment. For the purposes of the work was created website for the Erasmus programme at VOŠIS, where is explained the work with the system, which in the absence of Czech book of this topic may be useful. It is shortly described LDAP protocol and single sign-on at the end of the thesis. There is given the installation procedure of Novell NetWare 6.5, configuration proposal of the LDAP server, Novell eDirectory Tree design and implementation unified authentication among systems Joomla! and Moodle by using LDAP protocol, in the practical part of the work. From an included DVD you can easily download demonstration of my practical work in the form of source, database files of CMS Joomla! and LMS Moodle and virtualized readymade image contains preconfigured LDAP server, in which you can see all of the settings.
Obsah 1.
Úvod ................................................................................................................................................ 8
2.
Enterprise Content Management.................................................................................................... 9
3.
2.1.
Document Management System ............................................................................................. 9
2.2.
Digital Asset Management ...................................................................................................... 9
2.3.
Final Form Management ......................................................................................................... 9
2.4.
Web Content Management................................................................................................... 10
2.4.1.
Systémy pro správu obsahu naprogramované v jazyce PHP ......................................... 10
2.4.2.
Systémy pro správu obsahu naprogramované v jazyce ASP.NET .................................. 11
Joomla! – Open source matters .................................................................................................... 13 3.1.
Zdroj informací Joomla.org ................................................................................................... 13
3.2.
Technické požadavky nutné k provozu ................................................................................. 13
3.3.
Instalace................................................................................................................................. 15
3.4.
Frontend ................................................................................................................................ 15
3.5.
Backend ................................................................................................................................. 16
3.6.
Kategorizace obsahu ............................................................................................................. 19
3.7.
Vytváření článků .................................................................................................................... 20
3.8.
Typy rozvržení (layoutu) a obsahu ........................................................................................ 23
3.9.
Menu ..................................................................................................................................... 24
3.10.
Uživatelské role a oprávnění ............................................................................................. 25
3.11.
Rozšíření funkcionality – extensions ................................................................................. 27
3.11.1.
Komponenty .................................................................................................................. 28
3.11.2.
Moduly........................................................................................................................... 28
3.11.3.
Zásuvné moduly (Plugins) .............................................................................................. 28
3.11.4.
Šablony (Templates) ...................................................................................................... 29
3.11.5.
Jazyky (Languages) ........................................................................................................ 29
3.12. 3.12.1.
Užitečná rozšíření .............................................................................................................. 29 Lokalizace do více jazyků – JoomFish ............................................................................ 29
4.
5.
3.12.2.
Search Engine Friendly URL – sh404SEF ........................................................................ 29
3.12.3.
E-commerce................................................................................................................... 30
3.12.4.
Tvorba komunitního webu – Community Builder ......................................................... 30
3.12.5.
JDiagnostic ..................................................................................................................... 30
3.12.6.
Single Sign-On – JFusion ................................................................................................ 31
LDAP .............................................................................................................................................. 32 4.1.
Možnosti použití adresářové služby Novell eDirectory ......................................................... 32
4.2.
Instalace a konfigurace LDAP serveru v prostředí Novell...................................................... 33
4.3.
Konfigurace pluginu pro autentizaci uživatele pomocí LDAP protokolu v CMS Joomla! ...... 35
4.4.
Autentizace uživatele v prostředí Moodle za pomoci LDAP protokolu ................................. 36
4.4.1.
Learning management System (LMS) Moodle .............................................................. 36
4.4.2.
Instalace Moodle na Windows Vista + XAMPP.............................................................. 37
4.4.3.
Nastavení LDAP v Moodle ............................................................................................. 38
4.5.
Vytváření, editace a prohlížení LDAP stromu (Tree) ............................................................. 39
4.6.
Sledování komunikace při autentizaci uživatele na síťovém protokolu ................................ 39
Sjednocená autentizace uživatele na základě jednoho účtu (SSO) ............................................... 42 5.1.
SSO mezi systémy Joomla! a Moodle za použití LDAP .......................................................... 42
5.2.
PLDAP-PHP Universal LDAP Single-Sign-On ........................................................................... 44
5.3.
Novell SecureLogin ................................................................................................................ 44
5.4.
OpenID................................................................................................................................... 45
5.5.
Google Mail ........................................................................................................................... 46
5.6.
Windows Live ID .................................................................................................................... 46
6.
Závěr .............................................................................................................................................. 47
7.
Seznam obrázků ............................................................................................................................ 48
8.
Použité zdroje ................................................................................................................................ 49
1.
Úvod
Doba statických prezentací firem je již dávno pryč a s příchodem webu 2.0 se zvyšuje neustálý tlak na vývoj prezentací, kde se mohou návštěvníci aktivně podílet na tvorbě obsahu, kde interakce nekončí u kliknutí na hypertextový odkaz, a kde komunikace není jen zasláním emailu. Statická internetová prezentace se transformuje na komunitní web, popř. sociální síť, která poskytuje informace téměř v reálném čase. Tlak na snižování času a nákladů potřebných pro vytvoření a provoz webové prezentace neustále roste. Tato situace nahrává k používání hotových systémů pro správu obsahu, které tento čas i náklady minimalizují. S rostoucím počtem webových prezentací roste i počet uživatelských profilů a s tím spojenou nutností pamatování si různých hesel. V určitých systémech je technická podpora zahlcena právě činností související s obnovou ztracených účtů či hesel. Oba dva tyto argumenty mě motivovali k napsání bakalářské práce na téma: „CMS Joomla! a protokol LDAP“. Jejímž cílem je analýza a implementace tohoto velmi populární systému pro správu obsahu a zároveň navrhnutí řešení pro jednotnou autentizaci uživatelů za pomoci protokolu LDAP. Práce je rozdělena na dvě části, teoretickou a praktickou. Teoretická část práce se zabývá analýzou jednotlivých částí CMS systému, bez jehož znalostí bychom se při nasazení a následné správě systému neobešli. V závěru teoretické části je stručně popsán protokol LDAP a jsou předloženy návrhy různých implementací systémů pro zjednodušení autentizace uživatelů. Tyto teoretické poznatky jsou poté transformovány do praktické ukázky nasazení systému Joomla! v jeho nejnovější dostupné stabilní verzi 1.5.x. Stejně tak je předložena možnost konfigurace LDAP serveru, který běží na Novell NetWare 6.5 SP8, vysvětlena je také tvorba adresářové stromu a nakonci jsou systémy propojeny pomocí LDAP protokolu. Dané konkrétní znalosti se dají generalizovat k implementaci i jiných systémů pro správu obsahu, stejně tak se dají využít ke zjednodušení autentizace uživatelů za pomoci i jiných adresářových služeb, např. Microsoft Active Directory nebo i mezi jinými systémy než je Joomla! a Moodle. Nejedná se tedy v žádném případě o návod nebo uživatelskou příručku, ale o doporučení a předložení návrhu k řešení možných variant daných scénářů.
8
2. Enterprise Content Management Enterprise Content Management (ECM) jsou strategie, metody a nástroje používané k zachycení, správě, uchovávání, zabezpečení, publikování, poskytování obsahu a dokumentů napříč organizací. Takto definovala tento termín organizace AIIM (aiim.org). ECM nástroje a strategie umožňují spravovat nestrukturované informace mimo databázových dat, například textové a tabulkové soubory, PDF dokumenty, obrázky nebo emaily. Tento typ obsahu tvoří převážnou část podnikových informací. Nástroje pro správu podnikového obsahu jsou dále členěny na: DMS, WCM, DAM, FFM. [1]
ECM ERP
DMS /EDM
FFM
DAM
DIP
BPM
CCM
WCM
Obrázek 1: Rodina nástrojů, které tvoří řešení pro správu podnikového obsahu (ECM) [2]
2.1. Document Management System Document Management System (DMS) je počítačový systém nebo software určený ke správě a vyhledávání elektronických dokumentů a obrázků nebo zdigitalizovaných papírových dokumentů a obrázků (tj. převedení papírových dokumentů do jejich digitální podoby) [3].
2.2. Digital Asset Management Digital asset management je systém poskytující jednoduchý a kompletní přístup ke správě digitálních zdrojů. Má podobné vlastnosti jako DMS s rozdílem, že se specializuje na multimedia (digitální fotografie, animace, video a hudbu). [4]
2.3. Final Form Management Fixed/Final Form Management (FFM) systémy jsou průnikem archivačního systému, částečně spisové služby, imagingu a zpracování formulářů. Základní vlastnosti a funkcionalitu lze vidět v následujících oblastech:
zpracování papírových dokumentů a formulářů - produkční skenování a imaging, návrh a zpracování formulářů,
zpracování výstupů a tiskových sestav - tiskové sestavy a zprávy zachycené v ERP a jiných IS,
records management - systém elektronických záznamů (bez ohledu na formát, fyzickou formu či charakter) s uvedením doby uchování, následného skartování či archivace apod. (skartační znaky), 9
definice klasifikací informací, plánování pobadačových zakládacích systémů, politiky uchování. [5]
2.4. Web Content Management Web Content Management (WCM) nebo také Web Content Management System (Web CMS), případně jen CMS je software zajišťující správu dokumentů a jejich snadnou publikaci na Internetu. V dnešní době se pojmem CMS rozumí webová aplikace (redakční či publikační systém), který má následující charakteristiku: [3]
celý systém je složen z jádra systému, které zajišťuje základní funkcionalitu systému a pak z dalších modulů, které ho dále rozšiřují o požadovanou funkcionalitu
požadavek publikovat, editovat nebo smazat informaci je splněn za použití administrátorské sekce a WYSIWYG (What You See Is What You Get) editoru bez nutnosti znalosti programovacího jazyka, stejně tak i ostatní základní operace by mělo být možné provádět v administrátorské sekci (backend) aplikace bez nutnosti přímého zasahování do zdrojového kódu nebo do databáze
systém umožňuje autentizaci uživatelů, uživatele je možné přiřadit do různých rolí a řídit jejich oprávnění
programová část by měla být oddělena od části prezentační v podobě grafické šablony (template)
Mezi základní funkcionalitu moderních CMS redakčních systémů patří:
publikování článku
vedení řízené nebo neřízené diskuze
fotogalerie
videogalerie
RSS feed
2.4.1.
Systémy pro správu obsahu naprogramované v jazyce PHP
Obecně řečeno můžeme říct, že v kategorii PHP redakčních systémů najdeme více projektů vydaných pod licencí svobodného software než u ostatních programovacích jazyků (.NET, Java). Přestože se zde zmiňuji jen o dvou systémech, existuje jich celá řada. Některé požadavky na funkcionalitu dokonce mohou splňovat lépe jiné systémy než tyto dva následně jmenované, avšak tyto systémy jsem vybral proto, že se těší největší popularitě (největší počet implementací), největší komunitě uživatelů a největší množství rozšíření. Jsou to Drupal a Joomla!.
10
Drupal je bezplatný opensource CMS systém, který je ve světě velmi populární a hodně používaný. V České republice má mnohačetnou komunitu uživatelů vedenou Jakubem Suchým, který vlastní doménu drupal.cz a Janem Polzerem (maxiorel.cz), autor vůbec první české knihy o Drupalu. Na systému Drupal jsou například postaveny tyto weby: časopis BIZ, časopis CONNECT, britské MTV a mnoho dalších. Joomla! je stejně jako Drupal ve světě velmi populární. V České republice je komunita uživatelů trochu roztříštěna mezi weby: http://www.joomlaportal.cz/ a http://www.joomlacz.cz/. Druhý z webů spíše stagnuje. V české Joomla! komunitě na rozdíl od drupalistů neexistuje výraznější osobnost, která by dokázala nějakým způsobem četněji přispívat. Tento fakt dokazuje neexistence české knihy zaměřené na tento redakční systém. Přesto je Joomla! stejně kvalitní ne-li kvalitnější než Drupal. 2.4.2.
Systémy pro správu obsahu naprogramované v jazyce ASP.NET
V kategorii bezplatných systémů pro správu obsahu naprogramovaných za použití frameworku ASP.NET, respektive jazyka C# nebo VB.NET je složitější vybrat právě jen dva favority. Je to dáno zejména stavem, kdy dané systémy jsou vyvíjeny zdarma a poté je zakoupí určitá firma, která je pak prodává, nebo jsou rovnou od začátku vyvíjeny firmou s cílem komerčního úspěchu z prodeje vyvíjeného systému. Přesto jsem dokázal vybrat pouze dva systémy, které si velmi zdařile konkurují. Stejně tak jako u CMS naprogramovaných v jazyce PHP, je obtížné vybrat jednoho vítěze, tak i v této kategorii je objektivní zvolení vítěze nemožné a závisí jen na aktuálních subjektivních požadavcích. DotNetNuke se prezentuje jako nejpoužívanější CMS a web application framework na .NET platformě. Naprogramován je jazykem VB.NET. Z hlediska funkcionality se nijak nevymyká na žádnou stranu a obsahuje to, co každý použitelnější redakční systém. Je dostupný ve dvou edicích: Community Edition, která je volně ke stažení pod licencí BSD (opensource). Druhá edice s názvem Professional je již zpoplatněna. V této variantě dostanete navíc některé pokročilé nástroje, které v Community edici chybí, např.: pokročilé cachování, kontrola souborové integrity a zejména dokumentace a knowledge base. [6] Telligent Community známí spíše jako Community Server je na okraji klasického CMS. Spíše bych ho měl zařadit do speciální kategorie GroupWare. Specializuje se zejména na vytvoření korporátního webu založeného na čtyřech základních pilířích a tím jsou: blog každého uživatele s multimediálním obsahem, fórum, Wiki a foto galerie. Telligent Community nedávno změnil licencování a již není zdaleka tak velkorysý jako dříve. V dnešní době se hodí spíše pro firmy, které si mohou dovolit profesionální řešení včetně služeb implementace a následné podpory, ovšem za vyšší cenu. Varianta
11
enterprise je vhodná pro firmy, které chtějí vytvořit webovou prezentaci, intranet a sjednotit služby intranetu a extranetu s Microsoft Exchange a SharePoint Serverem. [7]
12
3. Joomla! – Open source matters Joomla! *džumla+ patří do kategorie opensource redakčních systémů naprogramovaných v jazyce PHP licencovaných pod GNU General Public License. Tento CMS vznikl v září 2005 tím, že skupina vývojářů vydala security patch pro redakční systém Mambo 4.5.2.3 a dal tak podnět k rozvíjení tohoto redakčního systému pod novým označením Joomla!. Pro tento název existuje zcela pochopitelné vysvětlení: název Joomla! je anglický fonetický přepis svahilského slova „jumla“, které znamená „všichni dohromady“ nebo „v celku“ a přesně tak Joomla! vznikla. [8]
3.1. Zdroj informací Joomla.org Domovské stránky projektu Joomla! najdete na adrese: http://www.joomla.org/, dále tu pak najdeme dokumentaci: http://docs.joomla.org/, pro vývojáře je tu API: http://api.joomla.org/, nápověda: http://help.joomla.org/, fórum: http://forum.joomla.org/ a v neposlední řadě i velké množství dalších rozšíření na adrese: http://extensions.joomla.org/. [8]
3.2. Technické požadavky nutné k provozu Joomla! je naprogramována za pomoci jazyka PHP a to za použití jeho objektového modelu. Dále je vyžadována databáze MySQL, jsou projekty, které by měli umožnit podporu i databáze MSSQL a Oracle, ale zatím bych toto nedoporučil běžnému uživateli využít, pokud to není zcela nezbytné. Pro běh se obvykle používá webový server Apache, ale vím, že bylo zdařile využito Microsoft IIS verze 6 i 7 (IIS doporučuji zkušenějším uživatelům). Přesné údaje o verzích najdete v tabulce níže.
Software
Doporučená Minimální Více informací
PHP*
5.2.x
4.3.10
http://www.php.net/
MySQL**
4.1.x +
3.23
http://www.mysql.com/
Apache*** (s mod_mysql, mod_xml a mod_zlib)
2.x +
1.3
http://www.apache.org/
Microsoft IIS****
7
6
http://www.iis.net/
Tabulka 1: Konfigurace nutná k provozu Joomla! 1.5.x [8] * Nedoporučuje se využívat verze PHP 4.3.9, 4.4.2 nebo 5.0.4. U těchto jednotlivých verzích jsou známé kritické chyby a Joomla! při instalaci havaruje. Zend Optimizer 2.5.10 pro PHP 4.4.x má také kritické chyby, doporučuje se upgrade na vyší verzi. Joomla zatím není úplně kompatibilní s PHP 5.3.
13
** Joomla! zatím není kompatibilní s MySQL 6.x. *** Pro generování nice url (search engine friendly URL, URL rewriting) je vyžadováno mít nainstalován modul Apache mod_rewrite. **** Joomla! je optimalizována pro běh na webovém serveru Apache (Microsoft IIS není oficiálně podporován), bude vyžadováno FastCGI a Microsoft URL Rewrite Module, pro další informace navštivte Joomla! IIS fórum: http://forum.joomla.org/viewforum.php?f=543 [8] Pro vyvíjení webové prezentace doporučuji nastavovat veškeré věci na svém lokálním serveru a teprve po odladění nahrát veškerý obsah na web. Zaprvé si velmi zkrátíte čas nutný pro tuto fázi projektu, zejména tím, že na lokálním serveru je daleko rychlejší odezva. Zadruhé se vyvarujete tomu, že uživatelé, zákazník a další lidé uvidí vaší práci ve fázi rozpracovanosti, nefunkčnosti, nehezké defaultní šablony vzhledu a dalším neduhům. Zatřetí indexovací roboti vyhledávačů (Google, Bing, atd.) zaindexující-li váš web ve fázi vývoj/nefunguje, mohou na celou doménu uvalit sankci např. v podobě velmi nízkého Google PageRank, Alexa Rank, S-Rank, atd., který může přetrvávat i tři měsíce, což negativně ovlivní další fázi projektu – budování návštěvnosti. Uživatelům, kteří nejsou seznámeni s administrací Apache serveru s PHP a databázového MySQL serveru doporučuji instalaci balíčku XAMPP, ostatní si můžou sami vše řádně nakonfigurovat. Pro lokální server je XAMPP obrovskou výhodou, protože již obsahuje vše potřebné pro provoz CMS Joomla! ale i ostatních webových aplikací na bázi PHP/MySQL. XAMPP je free opensource projekt, který obsahuje předkonfigurovaný Apache HTTP server, MySQL databázi, PHP a Perl programovací jazyky. Je multiplatformní, v MS Windows má přehledný Control panel, kde se dají nastartovat jednotlivé servery, pokud již neběží jako služba a je velmi často aktualizovaný, takže obsahuje vždy téměř nejposlednější verzi jednotlivých komponent. Ovšem není doporučováno ho provozovat jako veřejný web server z důvodu chybějícího nastavení bezpečnosti. Po fázi, kdy už je projekt připravený a otestovaný na lokálním serveru, je dobré ho nahrát na webový hosting, přičemž si dovoluji nedoporučit free hostingové společnosti nebo variantu free placených hostingových společností. Jednak z důvodu, že Joomla! ale i ostatní redakční systémy a i jiné systémy, fóra (phpBB), fotogalerie (Gallery 2.0), ERP systémy v PHP (webERP), systémy pro internetové obchody (Zen Cart), pro vedení projektů (dotProject.net), atd. vyžadují specifické nastavení webového serveru Apache. Příkladem je hlavně safe_mode, mod_rewrite, další vlastní konfigurace v souboru .htaccess, chybějící knihovny zlib (komprese/dekomprese), GD knihovna (obrázky) a další. Absence technické podpory, zálohování, dostupnost webu a změna nastavení u příkladů, které jsem uvedl, znemožňuje použití freehostingových služeb. Za 1500,-Kč ročně se dá získat velmi kvalitní 14
webhostingové služby. Z vlastní zkušenosti můžu říct, že strávený čas i problémy s freehostingem nestojí za ušetření této částky. Na to není nutné počítat ROI.
3.3. Instalace Instalačním procesem nás provede v sedmi krocích přehledný průvodce. V prvním kroku vybíráte ze široké nabídky jazyků, čeština je zde samozřejmostí. Po jednotlivých krocích se přesouváte tlačítkem předchozí respektive další. Druhý krok se jmenuje předinstalační kontrola, která se rozděluje na dvě části. První část obsahuje povinné požadavky, které musí webhosting splňovat, jinak nebude Joomla! fungovat. Kontroluje se zde především verze PHP a MySQL, ale i další části například podpora XML a knihovna pro kompresi zlib, kterou Joomla hojně využívá při instalaci volitelných součástí, které se uploadují na server kompimované v jednom z několika standardních formátů a za pomoci této knihovny se provádí dekomprese. Druhá část je doporučené nastavení, které je dobré splňovat, ale není to striktní podmínka. Třetí krok nám zobrazuje licenci GNU/GPL ve verzi 2.0, pod kterou je Joomla! šířena, jak již jsem se zmiňoval hned v první kapitole o Joomle!. Ve čtvrtém kroku nastavujeme připojení k databázi. Pátý krok, ve kterém se nastavuje FTP přístup, můžeme zcela vynechat a vrátit se k němu až při konfiguraci. V šestém kroku nastavujeme název webových stránek, email administrátora a heslo. V tomto kroku se taktéž můžeme vybrat, zdali chceme nainstalovat demo data. Pro první seznámení s CMS Joomla! vřele doporučuji. Poslední krok nás informuje o tom, zda-li instalace byla úspěšná a přípomíná nám, abychom smazali adresář installation. Pokud toto neuděláme nebude možné dále postupovat.
3.4. Frontend Část systému viditelná běžným návštěvníkům. Vzhled a funkcionalita závisí na nainstalovaných rozšířeních, vybrané nebo vlastnoručně vytvořené grafické šabloně (template).
15
Obrázek 2: Příklad grafického vzhledu frontend aplikace Joomla! (návrh pro Erasmus VOŠIS)
3.5. Backend Je část systému, která slouží k administraci. Přístup k backendu má pouze jeden nebo skupina administrátorů. Backend aplikace je rozdělen do přehledného menu. Na titulní stránce administrace i do obrázkových odkazů, které umožňují přejít k nejpoužívanějším položkám v administraci. Přístup do administrace je z URL adresy: http://www.domena.cz/administrator, v případě běhu na lokálním počítači: http://localhost/joomla/administrator. Přičemž z bezpečnostních důvodů doporučuji právě složku administrator přejmenovat na cokoliv jiného a nastavit všem administrátorským účtům bezpečné heslo (minimálně 8 znaků, obsahující znaky 0-9; a-z; A-Z; @#$%^&). Následuje popis jednotlivých menu a jejich položek Uživatelská část (Site):
Ovládací panel (Control Panel) – se dá přirovnat k odkazu Domů (Home) vrátí vás na úvodní stránku administrace
16
Správce uživatelů (User Manager) – administrace uživatelů (vytváření nových účtů, editace účtů, mazání účtů, přidělování rolí, aktivace/deaktivace účtů, změna údajů, změna hesla)
Správce médií (Media Manager) – správce souborů ve složce Media, umožňuje vytváření složek, mazání složek, náhled souborů, upload souborů, mazání, atd.
Globální nastavení (Global Configuration) – obecné nastavení redakčního systému: web offline, offline zpráva, jméno webu, defaultní WYSIWYG editor, metadata, nastavení SEO (nice url), povolená registrace uživatelů, ověření emailu – aktivace uživatelů, povolené typy souborů, debugování, nastavení cache, session, nastavení SSL, lokální čas serveru, nastavení FTP, databáze a emailu
Odhlášení (Logout) – slouží pro odhlášení z backend aplikace
Nabídky (Menus):
Správce nabídky (Menu Manager) – slouží ke správě menu, přičemž tvorbou menu se zabývá samostatná kapitola Menu
Koš nabídky (Menu Trash) – při smazání jednotlivých položek menu (nikoliv celého menu!!!) pomocí Menu Managera, jdou menu právě do tohoto koše, odtud se dají nadobro smazat nebo obnovit
Main Menu – již vytvořené menu, které obsahuje jednu položku a tou je odkaz na titulní stránku
Obsah (Content):
Správce článků (Article Manager) – kompletní administrace článků
Koš s články (Article Trash) – články, které jsou smazány jdou do tohoto Koše, odkud se dají obnovit nebo úplně smazat
Správce sekcí (Section Manager) – správa Sekcí, další informace v kapitole Kategorizace obsahu
Správce kategorií (Category Manager) – administrace Kategorií, další informace v kapitole Kategorizace obsahu
Správce titulní strany (Front Page Manager) – správa obsahu, který je zobrazen na titulní stránce
Komponenty (Components)
Banner – správa reklamních bannerů, definuje se kategorie, klienti a jednotlivé bannery, lze nastavit počet zobrazení jednotlivých bannerů (počítá počet přístupů) 17
Kontakty (Contacts) – správa kategorií a jednotlivých kontaktů v nich, lze definovat jaké věci se mají v kontaktech zobrazovat a pro jaká oprávnění
RSS kanály (News Feeds) – správa RSS kanálů, umožňuje kanály kategorizovat a nastavovat u jednotlivých feedu cache
Ankety (Polls) – správa anket, tato komponenta bude v připravované budoucí verzi Joomla! 1.6.x stažena z důvodu existence lepších komponent třetích stran pro ankety
Hledání (Search) – zobrazuje statistiku hledání, nejprve nutno povolit
Odkazy (Web Links) – správa odkazů, kategorie pro odkazy a odkazy, slouží pro vytváření seznamů odkazů a jejich následné zobrazení ve frontendu
Rozšíření (Extensions)
Instalovat odinstalovat (Install/Unninstal) – instalování a odinstalování rozšíření, další info v kapitole Rozšíření funkcionality
Správce modulů (Module Manager) – administrace Modulů, další info v kapitole Rozšíření funkcionality
Správce zásuvných modulů (Plugin Manager) – administrace Pluginů, další info v kapitole Rozšíření funkcionality
Správce šablon (Template Manager) – správa grafických šablon, možná editace souboru php i css, přepínání mezi template, náhled a základní informace, další info v kapitole Rozšíření funkcionality
Správce jazyků (Language Manager) – správa překladů, zvolení defaultní lokalizace, aktivace lokalizací, další info v kapitole Rozšířen funkcionality
Nástroje (Tools)
Číst zprávy (Read Messages) – čtení zpráv od uživatelů systému
Napsat zprávu (Write Messages) – psaní zpráv jednomu uživateli
Hromadná pošta (Mass Mail) – hromadné rozesílání zpráv uživatelům podle rolí
Globální kontrola (Global Check-in) – kontrola systému
Vymazat vyrovnávací paměť (Clean Cache) – vymazání cache
Vymazat exspirovanou Purge Expired Cache – vymazání pouze exspirované cache
Pomoc (Help)
Joomla! nápověda (Joomla! Help) – nápověda systému
18
Systémové informace (System Info) – informace, které se skládají z informací o systému, PHP nastavení, konfiguračním souboru, přístupu k souborům (chmod) a informacím o PHP (voláním metody php_info())
Obrázek 3: Vzhled backend aplikace CMS Joomla!
3.6. Kategorizace obsahu Cílem každého systému pro správu obsahu, jak již název napovídá je právě správa obsahu. Spravovat obsah znamená, členit ho, kategorizovat do určité hierarchie připomínající stromovou strukturu. Úplně nahoře bude vždy nejmenší počet prvků, aspoň by v dobrém návrhu mělo být, je to tak logické a úplně dole bude největší počet prvků. V našem případě jde o články. V redakčním systému Joomla! je možné kategorizovat Články (Articles) právě a jen do dvou-úrovňové hierarchie. Sekce i Kategorie jsou kontejnery, které nemají obsah, ale do kterých se obsah dává, v podobě objektů (článků) a pomáhají ho uspořádávat. Úplně nahoře jsou Sekce (Section), může jich být neomezené množství, v Sekcích najdeme Kategorie (Category), kterých může být také teoreticky neomezené množství, Kategorie (Category) obsahují Články (Article). Pak také je možný speciální případ, kdy článek nemá žádnou kategorii nebo sekci (Uncategorised), to je skutečně možné. Za předpokladu webových stránek, které budou mít několik málo článků je zbytečné články uspořádávat do jednotlivých kontejnerů (sekcí a kategorií), v případě ale webu, který bude obsahovat tisíce článků (zpravodajský portál) by bylo neuspořádávání článků, jednak pro autory, editory, administrátory a zejména pro uživatele nepřehledné, ba dokonce naprosto nešťastné.
19
Sekce (∞)
Kategorie (∞)
Článek (∞)
Sekce 1
Kategorie 1
Článek 1
Článek 2
Kategorie 2
Článek 3
Obrázek 4: Zjednodušené schéma kategorizace obsahu v CMS Joomla!
3.7. Vytváření článků Články můžeme vytvářet, modifikovat a mazat za předpokladu příslušných oprávnění. Vytvořit Článek (Article) je velice jednoduché a intuitivní. Stačí vyplnit základní údaje, kterými jsou následující:
Název článku (Title)
Alias – generuje se z něj odkaz na článek v podobě nice url, pokud nevyplníme, vytvoří se automaticky
Sekce (Section) – vybráním Uncategorised nebo předtím námi vytvořenou Sekci, zařadíme článek do této příslušné Sekce, viz info přechozí kapitola
Kategorie (Category) – vybráním Uncategorised nebo předtím námi vytvořenou Kategorii, zařadíme článek do této příslušné Kategorie, viz info přechozí kapitola
Publikováno (Published) – vybráním Ano/Ne bude článek okamžitě publikován, respektive nebude
Titulní strana (Front Page) – vybráním Ano/Ne bude článek publikován na titulní straně webové prezentace, respektive nebude
Do textového pole vytvoříme obsah článku, můžeme využít WYSIWYG editor. Defaultním editorem je TinyMCE http://tinymce.moxiecode.com/, ale není problém si nainstalovat jiný a toto nastavení změnit. Práce v tomto javascript editoru připomíná práci v programu typu Word, takže nepotřebuje další popis. Funguje tak, že uživatel v grafickém prostředí vytvoří obsah a přitom využívá formátování textu bez nutnosti znalosti HTML a CSS, na pozadí pak TinyMCE generuje právě kód za pomoci těchto 20
jazyků. Do obsahu článku můžeme vložit obrázek, který se nachází někde na internetu nebo na lokálním disku přes zabudovaný File manager. Další volitelnou nabídkou je Čti více (Read more), kde si sami rozdělíte anotaci k článku, pokud tuto možnost vynecháte systém ji použije za vás a může se stát, že se zrovna netrefí do vámi požadovaného stavu. Samotný obsah článku je dobré nejdříve napsat v běžném textovém editoru a poté teprve vložit na internet. Pokud by článek byl dlouhý nebo server zaneprázdněn a článek byste psali přímo, je možné, že díky timeout PHP skriptu byste o daný obsah přišli před jeho uložením. Také je dobré si před okamžitým publikováním článku nechat zobrazit jeho náhled (preview), abychom se vyvarovali editaci již publikovaného článku, čehož se snažíme maximálně vyvarovat. Dalšími možnostmi nastavení článku jsou základní parametry a pokročilé parametry. V základních parametrech se nastavují následující volby:
Autor (Author) – pro většinu uživatelů nejde změnit a nastaví se jen účet, pod kterým jste právě přihlášeni do administrátorské sekce, neplatí pro administrátora a další role, které mají vyšší oprávnění a tím mohou autora změnit, viz. Oprávnění a role
Alias autora (Author alias) – generuje se z něj odkaz na autora v podobě nice url, pokud nevyplníme, vytvoří se automaticky
Přístupová úroveň (Access level) – Public/Registered/Special, Public - článek se zobrazuje všem uživatelům, Registered – článek se zobrazuje jen uživatelům, kteří jsou přihlášeni, Special – musí být jejich uživatelská role Autor nebo vyšší, viz. Oprávnění a role
Datum vytvoření (Created date) – automaticky se vyplňuje, ale dá se změnit
Zveřejnit od (Start publishing) – velmi důležité chceme-li napsat článek teď a nechat ho automaticky publikovat k určitému datu, defaultně nastavené na publikování článku po jeho uložení
Zveřejnit do (Finish publishing) – pokud chceme již publikovaný článek k určitému datu automaticky skrýt (článek nebude smazán, ale nebude se dál již zobrazovat), defaultně vypnuté
V pokročilých parametrech článku najdeme zejména vlastnosti, které ovlivní jeho vzhled a některé další nastavení, které ve většině případů není zcela nezbytné měnit, jedná se zejména o vlastnosti:
Zobrazit titulek (Show title) – Use global/No/Yes – zobrazení nadpisu článku
Klikatelný titulek (Title Linkable) – Use global/No/Yes – nastavuje se, zdali je nadpis článku hypertextovým odkazem
Úvodník (Intro Text) – Use global/Hide/Show – zdali se má zobrazovat anotace k článku 21
Jméno sekce (Section Name) – Use global/Hide/Show – zobrazení názvu Sekce
Titulek sekce klikatelný (Section Title Linkable) – Use global/No/Yes – nastavuje se, zdali je název Sekce hypertextovým odkazem (po kliknutí na tento odkaz se zobrazí všechny články ve stejné Sekci)
Titulek kategorie (Category Title) – Use global/Hide/Show – zobrazení názvu Kategorie
Titulek kategorie je klikatelný (Category Title Linkable) – Use global/No/Yes – nastavuje se, zdali je název Kategorie hypertextovým odkazem (po kliknutí na tento odkaz se zobrazí všechny články ve stejné Kategorii)
Hodnocení článku (Article Rating) – Use global/Hide/Show – zdali je možné články hodnotit
Jméno autora (Author Name) – Use global/Hide/Show – zobrazení autora článku
Datum a čas vytvoření (Created Date and Time) – Use global/Hide/Show – zobrazení data vytvoření
Datum a čas úpravy (Modified Date and Time) – Use global/Hide/Show – zobrazení data editace článku
Ikona PDF (PDF Icon) – Use global/Hide/Show – zobrazení PDF ikony, po kliknutí na tuto ikonu se článek zobrazí jako PDF dokument
Ikona tisku (Print Icon) – Use global/Hide/Show – zobrazení tiskové ikony, po kliknutí na tuto ikonu se zobrazový modální dialogové okno Tisk
Ikona email (E-mail Icon) – Use global/Hide/Show – zobrazení ikony pro E-mail, po kliknutí na tuto ikonu se otevře primární poštovní klient a v těle zprávy bude daný článek
Jazyk obsahu (Content Language) – nastavení jazyka, ve kterém je článek napsán, lze zvolit jen z nabídky jazyků, které jsou již instalovány pro frontend. Velmi důležité pro vícejazyčný web a pro rozšíření typu JoomFish
Klíčový odkaz (Key Reference) – k rozšíření kontextové nápovědy, pro další informace doporučuji přečíst oficiální dokumentaci
Alternativní celý článek text (Alternative Read more text) – zamění text Čti více (Read more) za text vyplněný zde
Poslední věcí, která je možná nastavit u článků jsou metadata. Jedná se především o informace, které využívají indexovací roboti. Jejich význam by se neměl přeceňovat, protože v dnešní době je podstatný zejména samotný obsah článku (copywriting), ve kterém indexovací roboti hledají klíčová slova a nikoliv jen klíčová slova, která jsou jim pasivně podstrčena v hlavičce HTML. Přesto je dobré tuto možnost využít. Ručním vyplněním popisku a klíčových slov nebo použitím rozšíření, které toto vyplní za vás (Tag Meta, Missing Metadata module, Tags for Joomla plugin for sh404SEF). Je potřeba
22
rozlišovat metadata, která se vyplňují pro každý článek a metadata, která se nastavují v globální konfiguraci pro celou webovou prezentaci.
3.8. Typy rozvržení (layoutu) a obsahu Zobrazení článku nebo dalšího obsahu plně závisí na zvoleném typu rozvržení (layoutu). Zvoleným typem layoutu se podstatně mění vzhled prezentovaných informací. Změna layoutu je jednoduchá a vysoce flexibilní. To jak nastavit layout určitému obsahu se dozvíte v další kapitole, nejprve představím a krátce popíši vybrané typy layoutů. Layout pro články (Articles layout):
Vzhled článku (Article Layout) – je standardní layout, který se používá k zobrazení jednoho článku
Seznam archivovaných článků (Archived Article List) – podobný layout jako předcházející s rozdílem, že zobrazuje více článků a tyto články je možné filtrovat pomocí měsíců a roků
Vzhled formuláře pro odeslání článku (Article Submission Layout) – je rozvržení, které umožňuje vytvořit článek za podmínky, že je uživatel autentizován s rolí Autor a vyšší
Vzhled blogu kategorií (Category Blog Layout) – je složitější rozvržení než všechny předchozí, zde se musí nastavit základní parametry: Category (Kategorie, ze které se zobrazují tyto články), Leading (počet článků v plné šířce), Intro (počet článků, které se zobrazí ve sloupcích), Columns (počet sloupců, do kterých je rozděleno zobrazování článků), Links (počet dalších článků, u kterých je zobrazen jen název v podobě odkazu)
Vzhled seznamu kategorií (Category List Layout) – podobný layout jako Article Layout s rozdílem, že zobrazuje všechny články z jedné kategorie v podobě seznamu
Vzhled blogu titulní stránky (Front Page Blog Layout) – je rozvržení pro titulní stranu webové prezentace
Vzhled sekcí v blog formátu (Section Blog Layout) – shodné rozvržení jako Category Blog Layout s rozdílem zobrazování článků podle Sekce
Vzhled sekcí (Section Layout) – shodné rozvržení jako Category List Layout s rozdílem zobrazování článků podle Sekce
Layout pro ostatní obsah:
Vzhled kategorie kontaktů (Contact Category Layout) – zobrazuje veškeré kontakty v uvedeném adresáři kontaktů
23
Standardní vzhled kontaktu (Standard Contact Layout) – zobrazuje jeden konkrétní kontakt, umožní kontakt stáhnout v podobě standardizovaného formátu vCard a asociuje kontaktní formulář
Vzhled jednoho RSS kanálu (News Feed Layout) – zobrazuje obsah z RSS čtečky
Vzhled ankety (Poll Layout) – rozvržení vhodné k zobrazování anket
Hledat (Search) – layout formuláře pro vyhledávání
Vzhled uživatelského formuláře (User Form Layout) – toto rozvržení dovolí uživateli změnit informace poskytnuté o sobě, změnit heslo, nastavit jazyk frontendu i backendu (pokud do něj má přístup)
Obálka (Wrapper) – je speciální velmi užitečný layout, který dovolí za pomoci iframe vložit jakkýkoliv cizí obsah
Veškeré typy rozvržení je možno dále přizpůsobit pomocí pokročilých parametrů jako jsou řazení článků (podle abecedního názvu, podle data vytvoření, podle autora a podle počtu zobrazení), stránkování (kolik článků je na jednotlivé stránce) a dalších mnoha parametrů (zobrazování data vytvoření, jméno autora, atd.). Zároveň s instalací volitelných rozšíření přibývá počet různých layoutů, které jsou specificky zaměřené právě pro zobrazení informací z těchto rozšíření a manipulaci s nimi v prostředí frontendu.
3.9. Menu Menu se vytváří v režimu administrace (backend) aplikace za pomoci Menu Managera (Menus -> Menu Manager). Při vytváření menu musíme vyplnit čtyři následující položky:
Unikátní jméno (Unique Name) – unikátní název pro menu, nesmí obsahovat mezery a jiné nepovolené znaky
Titulek (Title) – Název menu, který se zobrazuje ve frontend aplikace
Popis (Description) – popisek, slouží zejména pro lepší orientaci mezi menu v backend aplikace
Jméno modulu (Module Title) – název pro menu, které se pak pod tímto názvem vkládá jako modul
Menu máme vytvořené a teď je potřeba přidat do tohoto menu položky. V Menu Manageru ve stejném řádku jako je naše nově vytvořené menu je sloupec s názvem Menu Item(s), klikneme tedy do této buňky, kde se nalézá ikona. Pokud se nám otevřel Menu Item Manager s názvem našeho nově otevřeného menu, jsme správně. Nahoře je ikona New. Po kliknutí na tuto ikonu musíme vybrat typ obsahu, na který bude odkazovat tato položka v menu. Jednotlivé typy obsahu jsou popsány 24
v kapitole: Typy rozvržení (layoutu) a obsahu. Následující formulář s nastavením bude z velké části záviset na vybraném typu obsahu, ale v zásadě budete muset vyplnit následující položky:
Titulek (Title) – název položky v menu
Nadřazená položka (Parent Item) – nadřazené menu
Zveřejněno (Published) – publikováno, Ano/Ne
Přístupová úroveň (Access Level) - Public/Registered/Special, Public – položka menu se zobrazuje všem uživatelům, Registered – položka menu se zobrazuje jen uživatelům, kteří jsou přihlášeni, Special – musí být jejich uživatelská role Autor nebo vyšší, viz. Oprávnění a role
Při kliknutí otevřít v (On Click, Open in) – při kliknutí otevřít ve stejném okně/novém okně s navigační lištou/novém okně bez navigační lišty
Další parametry závisí na výběru typu obsahu, ale většinou se jako základní parametr nastavuje zdroj obsahu. Po vytvoření menu musíme přejít do Module Manageru (Extensions -> Module Manager), kde v seznamu modulů najdeme podle názvu nově vytvořené menu. Kliknutím na něj se nám zobrazí nabídka, ve kterém musíme nastavit následující parametry:
Titulek (Title) – název menu, je již vyplněný, máme možnost ho zde editovat
Zobrazit jméno (Show Title) – zdali se má zobrazovat Název menu ve frontendu
Zveřejněno (Enabled) – zde naše menu aktivujeme nebo deaktivujeme
Pozice (Position) – určuje pozici, kde se menu bude zobrazovat, výběr z pozic zcela závisí na aktivní Šabloně (Template), v případě defaultní šablony můžeme vybírat z těchto pozic: breadcrumb, debug, footer, left, right, syndicate, top, user1, user2, user3 a user4
Řadit (Order) – pořádí v jakém se menu zobrazuje vůči ostatním menu
Přístupová úroveň (Access Level) - Public/Registered/Special, Public - menu se zobrazuje všem uživatelům, Registered – menu se zobrazuje jen uživatelům, kteří jsou přihlášeni, Special – musí být jejich uživatelská role Autor nebo vyšší, viz. Oprávnění a role
Nabídky (Menus) – All/None/Select Menu Item(s) from the List – zdali se mají při kliknutí na toto menu zobrazovat všechna ostatní menu/žádná/nebo vybraná menu z příslušného seznamu
3.10. Uživatelské role a oprávnění Definování uživatelských rolí, oprávnění a přiřazování určitých uživatelů do těchto rolí je základní vlastností systémů pro správu obsahu. Ani Joomla! není výjimkou. Joomla! umožňuje velmi pokročilé 25
řízení uživatelských rolí a oprávnění. Nastavování těchto rolí je dobré si rozvrhnout již před samotnou fází implementace CMS. Je potřeba znát jaké akce se budou dít za pomoci redakčního systému (vytvoření obsahu, odsouhlasení obsahu, přidávání komentářů, moderování komentářů, atd.) Podle těchto akcí navrhnout uživatelské role s potřebnými oprávněními. Máme-li různé typy obsahu, dokumentů s různým stupněm tajnosti nechceme, aby všichni uživatelé bez rozlišení jejich důvěryhodnosti měli přístup k těmto informacím. Pro dosažení tohoto stavu má Joomla! již v jádru zabudovaný tzv. Access Control List (ACL). V ACL jsou již zabudované a předem definované uživatelské role a jejich oprávnění.
Guests – anonymní uživatelé, nemají speciální práva
Registered Users – registrovaní uživatelé, normální uživatelé, kteří prošli procesem registrace a mají aktivní účet
Authors – registrovaní uživatelé, kterým byla přidělena role v kategorii Special, která je opravňuje pomocí frontendu vytvářet obsah, editovat svůj obsah, před publikováním musí být jejich obsah schválený uživatelem v roli Publishers
Editors – role podobná Authors s rozdílem, že mohou editovat i cizí obsah, jejich vlastní nový obsah musí být také před publikováním schválen od uživatelů role Publishers
Publishers – mohou publikovat obsah a samozřejmě vše další jako Editors
Managers – první uživatelská role, která má přístup (omezený) do backendu Joomla!
Admins – má větší oprávnění než Managers, ale přesto mohou být zdroje a nastavení, ke kterým nemá přístup
Super Admins – nejvyšší role ze všech rolí, má přístup ke všemu, uživatel, který instaloval CMS Joomla! má účet číslo jedna a jeho účet je v této roli, může jako jediný přidělat uživatelům roli Admin
26
Admins and Super Admins
Managers
Publishers
Editors
Authors
Registered Users
Guests
Obrázek 5: Skládaný Vennův diagram znázorňující uživatelské role
3.11. Rozšíření funkcionality – extensions Obecně se dá říci, že jedna z nejlepších věcí na redakčních systémech je právě jejich rozšiřitelnost. Jádro systému by mělo obsahovat jen nezbytně nutnou funkcionalitu, která se u všech projektů shoduje. Přičemž možnost rozšíření by měla být, co možná nejširší a integrace modulů, co nejjednodušší. U různých CMS systému můžeme najít jinou (nesprávně použitou) terminologii pro označení jádra – Core, Api nebo Framework, což může být trochu matoucí. Pro naprogramování vlastního rozšíření je zapotřebí, aby byl redakční systém perfektně zdokumentován, což Joomla! skutečně splňuje. Každý webový projekt postavený na již hotovém CMS řešení je tak rozdílný, že každý může šáhnout po jiném rozšíření, přesto se některé požadavky velmi často opakují. Např. fórum, fotogalerie, IM mezi uživateli, atd. Joomla! jak již bylo zmíněno v úvodu má obrovskou komunitu vývojářů, 27
přispěvovatelů a uživatelů, kteří většinou pracují bez nároku na odměnu. Až na výjimky, což jsou rozšíření, které jsou označeny jako komerční (Commercial), jejich počet poslední dobou stále více přibývá. Joomla! rozlišuje 3 základní typy rozšíření funkcionality. Jsou to Komponenta (Component), Modul a Plugin. Dále pak tu jsou ještě dvě rozšíření, první se týká výsledného vzhledu aplikace a tím je Šablona (Template), posledním rozšířením je rozšíření jazykové (Language). Všechny tyto rozšíření mají fyzické umístění na disku ve stejnojmenných složkách. Všechna rozšíření se typicky instalují z jednoho místa v backendu aplikace a jsou na to samozřejmě vyžadovány příslušné oprávnění typu Admin nebo Super Admin. Tímto místem je Extensions -> Install/Unninstal, kde si můžeme zvolit ze tří možností. První možností je instalace z pevného disku, což je nejčastěji využívané. Tato možnost očekává cestu ke komprimovanému balíčku metodou ZIP nebo TGZ. Druhou možností je cesta ke složce (adresáři), který vznikl dekomprimací příslušného rozšíření. Poslední metoda je instalace přímo z URL, kdy je ovšem nezbytně nutné mít předem nakonfigurovaný FTP přístup na webhosting, kde je Joomla! nainstalována. Jednotlivá rozšíření mají přesně definovaný tvar a uvozuje je jeden XML soubor s informacemi o daném rozšíření, který je načten při instalačním procesu. Podrobnosti o jednotlivých rozšíření se dozvíte v následujících podkapitolách. 3.11.1.
Komponenty
Komponenty obsahují větší část programu, která řeší určitou funkcionalitu. Komponenty se zobrazují v hlavní významové část webu (Main Content). Komponenty se dají často parametrizovat v backendu aplikace, kde mají vlastní menu Components. 3.11.2.
Moduly
Moduly jsou obvykle samostatné menší části programu nebo jsou spojeny s Komponentou, aby zobrazovali určitý obsah na určeném místě, v různé části stránky (jako postranní panel, těsně pod logem, nad patičkou stránky, atd). Jsou zároveň spojeny se Šablonou, která určuje jejich grafickou podobu. Příkladem modulů jsou: banners, breadcrumbs, latest news, login, newsflash, poll, random image a další. Pozice, kde se modul bude zobrazovat se nastavuje v backendu aplikace. 3.11.3.
Zásuvné moduly (Plugins)
Zásuvné moduly (Plugins) byly dříve označeny (v době CMS Mambo) jako mambots, zkratka pro Mambo robots. Pluginy jsou rozšířením frameworku, takže fungují na nižší úrovni než Komponenty a většinou obsahují funkcionalitu, která souvisí právě s jádrem CMS Joomla!, příkladem může být autentizace uživatele za pomoci pluginů (Authentication – Joomla a Authentication – LDAP). Pluginy se ještě většinou musí konfigurovat v backendu aplikace.
28
3.11.4.
Šablony (Templates)
Šablona (Template) zodpovídá za grafickou prezentaci daného webu. V Joomla! existují dva typy Šablony. Jeden typ pro frontend a druhý pro backend, přičemž si myslím, že měnit vzhled administrátorské sekce je víceméně zbytečné. Zatímco měnit vzhled frontendu je nezbytné. Template se dá stáhnout zadarmo z několika různých webů především: http://www.joomla24.com/, http://www.siteground.com/ nebo zakoupit: http://www.templatemonster.com/ a v neposlední řadě také vytvořit. Existují rozšíření, které dovolují načítat šablonu podle aktuálního času, datumu (TimedTemplates), podle preference uživatele (Template Chooser) nebo náhodně. Nastavení uživatele ohledně template je možné uložit do jeho profilu nebo pokud není registrován, tak ve formě Cookies. 3.11.5.
Jazyky (Languages)
Jazykové rozšíření (Language extension) je rozděleno do dvou kategorií. První překládá samotný frontend a druhý překládá backend. Většina oficiálních překladů CMS Joomla!, kterých je více než 50 , pod které spadá i Čeština obsahuje překlad obou těchto částí. Tyto překlady lokalizují kompletní systém, tak jak je možný nainstalovat ze základního balíčku, existence lokalizace do daného jazyku později doinstalovaných rozšíření samozřejmě čistě závisí na autorovi tohoto rozšíření. Převážná většina volitelných rozšíření je v anglickém jazyku, dále pak v Němčině, Francouzštině a Španělštině, lokalizace do dalších jazyků pak závisí na činnosti lokálních uživatelských skupin v dané zemi. Oficiální překlady jsou dostupné na stránce: http://extensions.joomla.org/extensions/languages/translationsfor-joomla.
3.12. Užitečná rozšíření 3.12.1.
Lokalizace do více jazyků – JoomFish
JoomFish je bezplatné rozšíření, které umožňuje lokalizovat obsah vaší webové prezentace do více jazyků. Nejedná se přitom o automatizovaný strojový překlad webové prezentace a zároveň se nejedná ani o lokalizaci frontendu či backendu, k tomuto slouží překlady dostupné z oficiálních stránek Joomla!. Veškerý obsah si musíte přeložit sami, ale JoomFish poskytne jednoduchý nástroj k lokalizaci obsahu základních komponent: článků, menu, kategorií, ale i dalšího obsahu, který není v jádru systému a byl doinstalován na základě dalších rozšíření. 3.12.2.
Search Engine Friendly URL – sh404SEF
sh404SEF patří mezi základní rozšíření, které nesmí chybět žádné webové prezentaci založené na CMS Joomla!, ačkoliv se Joomla! bez tohoto rozšíření dá nastavit tak, aby generovala tzv. nice url (search engine friendly URL, URL rewriting), ale rozšíření bezplatné sh404SEF umí přepisovat i odkazy, 29
které nejsou přímo generovány z jádra systému Joomla!, ale které pocházejí i z dalších volitelných rozšíření, např.: VirtueMart, Fireboard, Community Builder a mnoha dalších. 3.12.3.
E-commerce
Pod pojmem E-commerce zde mám na mysli systém, který obsahuje funkcionalitu elektronického obchodu, což je velmi zúžený a ořezaný pohled na e-commerce. Elektronický obchod (shopping cart) v CMS Joomla! je realizován bezplatným rozšířením zvaným VirtueMart. Oficiální webová prezentace se nachází zde: http://virtuemart.net/. VirtueMart je k dispozici i pro předchůdce Joomla!, Mambo. VirtueMart se prezentuje jako plnohodnotné řešení elektronického obchodu. Obsahuje velké množství platebních, přepravních a dalších rozšiřujících modulů. Je lokalizován do českého jazyka. Česká komunita kolem VirtueMart je soustředěna zejména na této adrese: http://www.obchod-virtuemart.cz/, kde naleznete informace v českém jazyce, návod na instalaci, českou lokalizaci a další rozšiřující moduly. K datu psaní této bakalářské práce bylo na této stránce registrováno 135 převážně českých a slovenských internetových obchodů postavených na této platformě, což není malé číslo. [9] Mé zkušenosti z VirtueMart jsou takové, že dávám raději přednost jinému e-commerce řešení na bázi opensource, které se vyvíjí samostatně, bez nutnosti integrace k Joomla! a tím je Zen Cart. Zen Cart je samostatný projekt, který není vázaný na CMS Joomla!. Je to bezplatné opensouce řešení k realizaci internetového obchodu postaveného na PHP/MySQL. V České republice je velmi populární, proto tu najdete velmi silnou a početnou komunitu uživatelů. Díky které vznikla lokalizace do češtiny i některé české rozšíření. Nejedná se jen o pouhý překlad, ale o přizpůsobení pro české právní a účetní předpisy. 3.12.4.
Tvorba komunitního webu – Community Builder
Za pomoci Joomla! a Community Builderu se dá vytvořit opravdu komunitní web se vším všudy. Community Builder rozšiřuje redakční systém o pokročilejší správu uživatelů, který přidává uživatelský profil, ve kterém se dají definovat jednotlivá pole. Dále přidává propojení uživatelských profilů, tzv. Connection a umožňuje integraci uživatelského profilu s newsletterem, fórem, foto galerií a textovými zprávami mezi uživateli. 3.12.5.
JDiagnostic
JDiagnostic je komponenta, která poskytuje možnost jednotlivých testů zejména pro troubleshoting autentizace uživatele za použití různých pluginů pro přihlášení. Velmi užitečná je zejména při nastavení LDAP protokolu fungujícího s Microsoft AD, kdy pomocí přehledného průvodce v několika krocích umožní vše nastavit a otestovat. 30
3.12.6.
Single Sign-On – JFusion
Je bezplatné rozšíření, které patří do kategorie autentizace uživatelů. JFusion je konkrétně jakýsi můstek (bridge) mezi Joomla! a ostatními opensource systémy: phpBB, myBB, SMF, vBulletin (všechno fóra), Magento (e-commerce) a Moodle (LMS). Jeden z těchto systémů musí být nutně Master a všichni ostatní jsou Slave. Uživatel se přihlásí do systému, který je Master a poté co je v tomto systému autentizován, může přejít do libovolného dalšího systému ze skupiny podporovaných systému, kde je již také autentizován díky JFusion.
31
4. LDAP Lightweight Directory Access Protocol (LDAP) [RFC 2251], je zjednodušenou verzí adresářového protokolu X.500 a původně sloužil pro komunikaci s tímto protokolem. Postupem času se vyvinul v plnohodnotný adresářový protokol, který je schopen svému předchůdci zdatně konkurovat a je v podnikové sféře mnohem použitelnější, než jeho předchůdce. V současné době využívají protokol X.500 pouze velké telekomunikační společnosti. Podniková sféra a ostatní organizace využívají protokol LDAP. [10] Většina středních a velkých podniků, vysokých škol a státních institucí používá Novell Netware, popř. jeho nástupce Open Enterprise Server 2, na kterém běží Novell eDirectory nebo Microsoft Windows Server a jeho součást Active Directory, popř. Linux OpenLDAP. Všechny tyto tři systémy patří do skupiny síťových operačních systémů (Network Operation system, NOS) jejich hlavním záměrem je efektivně řídit síťové prostředky a služby. [11] Moje řešení autentizace mezi systémy Novell, Joomla! a Moodle přinese zjednodušení pro uživatele a ušetří jeho čas.
4.1. Možnosti použití adresářové služby Novell eDirectory Adresářová služba eDirectory i její předchůdce NDS (Novell Directory Services) jsou založeny na celosvětovém standardu X.500 doporučeném organizacemi CCITT a OSI. Služba NDS se objevila poprvé v systému NetWare 4 (rok 1993). eDirectory pak přišla na scénu v NetWare 5.1 (rok 2000) jako alternativa k NDS, přičemž v následujících systémech NetWare 6 a NOES (Novell Open Enterprise Server) již představuje jejich standardní systémový adresář. [12] Službu eDirectory je možné chápat jako databázi, která udržuje informace o součástech počítačové sítě (tzn. o uživatelích, serverech, tiskárnách, licencích, aplikacích, politikách apod.). Ty jsou pak přístupné operačnímu systému (různým platformám), administračním nástrojům i kompatibilním aplikacím. eDirectory významně zjednodušuje správu sítě. Díky ní lze všechny prostředky sítě spravovat z jednoho místa a jednotnými nástroji. [12] K základním rysům eDirectory patří objektovost, otevřenost, hierarchičnost, globálnost, distribuovatelnost a multiplatformnost. Zmíněnou objektovostí se rozumí skutečnost, že informace o součástech sítě (všechny zdroje sítě, například servery, uživatelské skupiny, uživatelé, atd.) jsou udržovány ve formě objektů a jejich vlastností. Ve vlastnostech (properties) jsou uchovávány všechny informace o objektu a jeho chování v síti a také samozřejmě jeho uživatelská práva. Zatímco některé objekty představují skutečné fyzické zařízení nebo osoby (například objekt User reprezentuje skutečného uživatele, Printer představuje skutečnou tiskárnu, Computer skutečný počítač atd.), jiné 32
objekty jsou spíše logického charakteru, což mohou být objekty, které dále organizují ostatní (Country, Organization, Organizational Unit, atd.), nebo také objekty, které v sobě již žádné další neobsahují, ale ani nepředstavují žádné fyzické zařízení (například Print Queue). Z tohoto pohledu lze všechny objekty eDirectory dělit na uzlové (container objects) a koncové (leaf objects). Uzlové objekty představují větve stromu eDirectory a organizují v sobě další uzlové či koncové objekty. Slouží k lepší orientaci v síti, ve které mohou představovat například určitou část podniku, region nebo zemi. Koncové objekty reprezentují listy stromu eDirectory, proto se jim též říká listové. Mohou představovat fyzické součásti sítě jako tiskárny, servery nebo uživatele, ale i objekty logického charakteru (tisková fronta), ovšem jen ty, jež nemohou obsahovat žádné další objekty. *13] Množina typů těchto objektů a jim příslušných vlastností (tzv. schéma eDirectory) je přitom otevřená, lze ji tedy rozšiřovat a upravovat dle potřeby. Jednotlivé definované objekty jsou umísťovány do hierarchické stromové struktury nazývané eDirectory Tree. V této struktuře jsou objekty organizovány nezávisle na jejich fyzickém umístění v síti. To znamená, že uživatelé mohou používat tyto zdroje bez znalosti jejich fyzického umístění (pokud k nim mají přidělena přístupová práva). [13] Názvy jednotlivých atributů, které jsou uloženy v eDirectory, a ke kterým je možné přistupovat pomocí LDAP protokolu získáte tak, že v ConsoleOne otevřete LDAP Group na vašem serveru s panelem s názvem Attribute Mappings. Toto je velmi důležité pro mapování jednotlivých atributů s ostatními systémy pomocí LDAP protokolu. Názvy těchto atributů jsem musel vyplnit v CMS Joomla! i Moodle, aby proběhlo správné namapování při user binding.
4.2. Instalace a konfigurace LDAP serveru v prostředí Novell Jako LDAP server jsem použil Novell NetWare 6.5 SP8, který využívá velké procento podniků, státních organizací a školských institucí. V instalačním průvodci jsem v prvním kroku vybral z nabídky předkonfigurovaných prostředí LDAP server, které obsahuje eDirectory, iMonitor, ConsoleOne, DHCP server atd. V dalším kroku zvolíme název serveru. Poté jsem zaškrtl použití IP protokolu a nadefinoval IP adresu serveru, masku podsítě a IP adresu routeru. Po tomto kroku se nastavuje DNS. V následujícím kroku pak časové pásmo, ve kterém se nachází server. Dále pak vybíráme ze dvou možností. První je vytvoření nového eDirectory adresářového stromu (Tree) nebo pokud instalovaný server bude na síti, kde již existuje server eDirectory nebo NDS strom (Tree) nic nevytváříme. V případě, že jsme zvolili variantu s přidáním adresářového stromu, tak v dalším kroku tento adresářový strom budeme vytvářet. V posledním kroku instalačního průvodce volíme metody přihlášení administrátora. Poté následuje samotná instalace serveru.
33
Nejlepší možnost pro konfiguraci nainstalovaného serveru je grafické prostředí ConsoleOne nebo iManager. Přičemž iManager není standardně nainstalován. Instalaci je nejlepší provést na lokální počítač, odkud se bude server běžně konfigurovat. Standardní nastavení LDAP serveru pod Novellem vyžaduje šifrované spojení.
o=company
ou=engineering
ou=sysadmin
cn=admin
ou=sales
ou=development
cn=Martin David
cn=test
Obrázek 6: Schéma vytvořeného Novell eDirectory Tree
34
ou=hr
Obrázek 7: Názorná ukázka atributů v LDAP serveru
4.3. Konfigurace pluginu pro autentizaci uživatele pomocí LDAP protokolu v CMS Joomla! Joomla! může sloužit jako intranetová aplikace a vstupní brána do dalších systémů. Uživatel se přihlásí pomocí svého uživatelského jména a hesla, systém ho autentizuje za použití LDAP protokolu proti jeho již vytvořenému účtu v Novell eDirectory nebo Microsoft Active Directory, respektive Linux OpenLDAP serveru, pokud jsou zadané informace správné, je uživateli umožněn přístup do systému a zároveň je autentizován i v systému Moodle. Pro možnost autentizace uživatele pomocí LDAP protokolu v systému Joomla! se v administrátorské sekci -> Extensions -> Plugin Manager -> Authentication – LDAP nastaví následující parametry:
Zveřejněno (Enabled) – Yes
Host – IP adresa LDAP serveru
Port – port na, kterém LDAP server naslouchá, defaultně 389 nebo 636 (LDAPS)
LDAP V3 – zdali má použít LDAP ve verzi 3, jedná-li se o Novell NetWare 6.5 a novější nebo MS Server 2003 a novější, pak YES 35
Vyjednat TLS (Negotiate TLS) – šifrované spojení mezi Joomla! a LDAP serverem, nutno nastavit i na LDAP serveru, k prvotnímu testování bych doporučil NO, poté do produkčního prostředí určitě nastavit šifrované spojení kvůli bezpečnosti
Následovat zdroj (Follow Referrals)
Autorizační metoda (Authorisation Method) – Bind and Search nebo Bind Directly as User
Základní DN (Base DN) – základní uzel stromu, v mém případě: o=COMPANY
Hledaný řetězec (Search String) – vyhledávací řetězec pro nalezení uživatele, v mém případě: uid=[search]
DN uživatele (User’s DN) – kontext, ve kterém se nacházejí uživatelé v mém případě: cn=[username],ou=SYSADMIN,ou=ENGINEERING,o=COMPANY
Uživatelské jméno pro připojení (Connect username) – dvě možnosti, anonymní DN lookup (binding) v tomto případě nechte uživatelské jméno a heslo prázdné nebo pro správcovské připojení vyplňte
Heslo pro připojení (Connect password)
Mapovat: Celé jméno (Map: Full Name) – slouží k namapování celého jména proti LDAP serveru, pro Novell nastavte hodnotu na: fullName
Mapovat: Email (Map: E-mail) – slouží k namapování celého jména proti LDAP serveru, pro Novell nastavte hodnotu na: mail
Mapovat: User ID (Map: User ID) - slouží k namapování celého jména proti LDAP serveru, pro Novell nastavte hodnotu na: uid
4.4. Autentizace uživatele v prostředí Moodle za pomoci LDAP protokolu 4.4.1.
Learning management System (LMS) Moodle
Learning management system (LMS) je softwarový balík určený pro podporu prezenční i distanční výuky prostřednictvím kurzů dostupných na internetu. Bývá velmi podobný redakčním systémům (CMS) s rozdílem, že je zaměřen na podporu výuky v podobě e-learningu. Většinou obsahuje moduly pro evidenci a správu studentů, kurzů, správu studijních plánů, evidenci a hodnocení studentů, komunikační nástroje, nástroje k vytváření výukových kurzů a úložiště výukového obsahu. Moodle je bezplatný opensource systém, které patří do kategorie LMS. Běží na Unix, Linux, Windows, Mac OS X, Netware a na jakémkoliv dalším systému, který podporuje PHP. Data jsou ukládána v databázi MySQL, PostgreSQL, MS SQL nebo Oracle. Moodle umožňuje či podporuje snadnou publikaci studijních materiálů, zakládání diskusních fór, sběr a hodnocení elektronicky odevzdávaných úkolů, tvorbu online testů a řadu dalších činností sloužících pro podporu výuky. [14]
36
4.4.2.
Instalace Moodle na Windows Vista + XAMPP
Pokud instalujete Moodle na Windows Vista za použití XAMPPu, tak se někdy stává, že dojde k chybě. Při instalaci se objeví bílá obrazovka a instalační proces je přerušen, a není možné pokračovat v instalaci dál. Je to nejspíše způsobeno, že instalační skript nemůže vytvořit soubor config.php a uložit ho. V tomto případě postupujeme podle návodu, který byl zveřejněn na oficiálním Moodle fóru:
Pokud máte již nainstalovaný XAMPP, tak si stáhněte standardní Moodle balíček (nepotřebujete balíček s označením Windows, který obsahuje právě i XAMPP) a rozbalte ho do složky c:\xampp\htdoc. Takto byste měli mít všechny soubory na tomto umístění: c:\xampp\htdocs\moodle.
Vytvořte adresář: c:\xampp\htdocs\moodledata
Je potřeba změnit oprávnění ke složce moodledata, to provedete tak, že na tuto složku kliknete pravým tlačítkem a přejdete na panel s názvem Zabezpečení, přidejte uživatele Everyone a následně mu nastavte oprávnění Read&Write
Nakonec otevřete váš textový editor, který běžně používáte (např. freewarový PSPad) a tento zdrojový kód zkopírujte do nově vytvořeného souboru.
dbtype = 'mysql'; $CFG->dbhost = 'localhost'; $CFG->dbname = 'moodle'; $CFG->dbuser = 'root'; $CFG->dbpass = ''; $CFG->dbpersist = false; $CFG->prefix = 'mdl_'; $CFG->wwwroot = 'http://localhost/moodle'; $CFG->dirroot = 'C:\xampp\htdocs\moodle'; $CFG->dataroot = 'C:\xampp\htdocs/moodledata'; $CFG->admin = 'admin'; $CFG->directorypermissions = 00777; // try 02777 on a server in Safe Mode $CFG->unicodedb = true; // Database is utf8 require_once("$CFG->dirroot/lib/setup.php"); // MAKE SURE WHEN YOU EDIT THIS FILE THAT THERE ARE NO SPACES, BLANK LINES,
37
// RETURNS, OR ANYTHING ELSE AFTER THE TWO CHARACTERS ON THE NEXT LINE. ?>
Nyní uložte soubor zde: c:\xampp\htdocs\moodle\config.php Pokud používáte poznámkový blok je zapotřebí zvolit možnost uložit jako, nikoliv uložit, jinak místo config.php by se uložilo config.php.txt, což by způsobilo při instalaci rovněž chybu.
Vše je hotovo, nyní můžete spustit instalační průvodce, do internetového prohlížeče napište: http://localhost/moodle, následuje již korektní instalace popsaná dle návodu k instalaci.
4.4.3.
Nastavení LDAP v Moodle
Pro nastavení autentizace uživatele LDAP protokolem v LMS Moodle se musíme přihlásit do administrátorské sekce. V administrátorské sekci vidíme po levé straně menu. V tomto menu zvolíme Users -> Authentication -> LDAP server. Následuje popis jednotlivých voleb nastavení:
Host URL – nastavení URL adresy k LDAP serveru; 192.168.93.1
Version – verze LDAP protokolu; 3
LDAP encoding – použité kódování, nejběžnější utf-8 nebo cp1250; utf-8
Hide passwords – pokud nastavíme na ano, pak se hesla neukládají v databázi Moodle, zvyšuje to zabezpečení; Yes
Distinguished Name – pro anonymní binding nemusíme vyplňovat
Password - pro anonymní binding nemusíme vyplňovat
User type – zde zvolíme typ LDAP serveru; Novell eDirectory
Contexts – seznam kontextů, ve kterých se nacházejí uživatelé, pro více záznamů jako oddělovač použijeme [středník+;
Search subcontexts – zdali vyhledáváme uživatele i v dceřiných kontextech; YES
Po konfiguraci všech potřebných voleb zbývá jen kliknout na ikonku zavřeného oka, tím se aktivuje příslušný autentizační plugin. Pokud je aktivováno větší počet autentizačních zásuvných modulů, je potřeba nastavit jejich pořadí. To se provádí šipkami nahoru/dolu. [15]
38
4.5. Vytváření, editace a prohlížení LDAP stromu (Tree) V kapitole o Novell NetWare jsem popisoval instalaci LDAP serveru a vytváření LDAP Tree. LDAP strom je možné dále konfigurovat za pomoci iManageru nebo ConsoleOne (pokud se jedná o Novell eDirectory Tree). Ani v jednom ve zmiňovaných nástrojích mi práce s Novell LDAP Tree nepřišla uživatelsky přívětivá. Proto jsem se poohlídnul po nástroji, který by byl freeware a dokázal by konfigurovat nejen Novell LDAP server, ale i ostatní LDAP. Po delším hledání jsem nalezl velmi kvalitní program s názvem Apache Directory Studio. Apache Directory Studio (dříve LDAP studio) je freewarová aplikace pro práci s LDAP serverem. Na rozdíl od podobných nástrojů umožňuje Apache Directory Studio práci v přehledném grafickém uživatelském rozhraní, které na rozdíl od strohé příkazové řádky, velice ulehčí administraci LDAP serveru. Jedná se o aplikaci napsanou v jazyce Java, díky tomu je multiplatformní (Windows, Linux, Mac OS X). Existuje ve dvou verzích. První verze běží jako samostatná aplikace, druhá verze existuje jako plugin k velmi známému a používanému vývojovému prostředí Eclipse. Primárně byla určena k administraci Apache Directory serveru, aktuální verze 1.4.0, kterou jsem měl možnost otestovat bezproblémově zvládala přístup a administraci Microsoft AD, Novell eDirectory a OpenLDAP server. [16]
4.6. Sledování komunikace při autentizaci uživatele na síťovém protokolu Wireshark (přejmenovaný z Ethereal kvůli sporům o značku) je opensource aplikace zaměřená na analyzování síťové komunikace a odchytávání paketů (protocol analyzer a packet sniffer). Umožňuje zachytávat pakety na všech síťových rozhraních a to včetně těch virtuálních. V mém případě odchytával komunikaci mezi Novell NetWare 6.5 SP8, který byl virtualizován pod VMware a Apache web serverem, který běžel na hostitelském OS (Windows Vista SP2). Zachytávání paketů tak probíhalo na virtuálním rozhraní VMware Virtual Ethernet Adapter. S Wireshark je možné odchytávat a analyzovat velmi rozmanitou sadu protokolů. Nastavením dvou typů filtrů (na vstupu, k zobrazení) se zpřehlední daný výstup. [17] Wireshark jsem využil pro sledování síťové komunikace a konfiguraci parametrů mezi LDAP serverem a systémy Joomla! a Moodle. V systému Microsoft Windows Vista se nachází aplikace Windows Kontakty, pokud tedy ve vašem prohlížeči otevřete podobnou adresu (je potřeba pozměnit URL, aby se
shodovalo
s vaším
adresářovým
stromem,
číslem
portu,
uživatelem,
atd.)
ldap://192.168.93.1:389/cn=Martin%20David,ou=Development,ou=ENGINEERING,o=COMPANY měl by se vám zobrazit kontakt a v programu Wireshark byste měli zachytit komunikaci. Pokud se kontakt zobrazí, což by neměl být problém, tak můžete tuto komunikaci porovnávat s nastavením v Joomla!,
39
Moodle nebo v jakýmkoliv jiným systémem, který podporuje autentizaci pomocí protokolu LDAP a zjistit, kde se daná komunikace liší a podle chybové hlášky, najít a opravit chybu v nastavení. Wireshark vyžaduje k běhu pod MS Windows běžící službu „NPF (NetGroup Packet Filter) driver“. Při instalaci můžeme zvolit, zdali tuto službu, chceme nechat neustále zapnutou nebo si jí budeme spouštět manuálně. Já jsem zvolil manuálně, proto před spuštěním odchytávání komunikace v programu, nejdříve spustím příkazový řádek v roli administrátor a pak napíši příkaz: „net start npf“. Mé nastavení programu Wireshark pro zachytávání komunikace LDAP protokolem bylo následující:
Interface: Local; VMware Virtual Ethernet Adapter
Capture Filter: tcp port 389 (zachytává jen komunikaci za použití protokolu LDAP)
Tímto jsem zjistil, že defaultním nastavením Novell LDAP serveru je zakázáno odesílání hesla v podobě „plain text“. Joomla! i Moodle defaultně odesílají heslo nešifrované a to způsobuje při bindování uživatele protokolem LDAP chybu „Confidentiality required“. Přes Novell ConsoleOne stačí v LDAP Group v záložce General odtrhnout nastavení „Require TLS simple binds with password“.
Capture Filter: tcp port 636 (zachytává jen komunikaci za použití protokolu LDAPS)
40
Obrázek 8: Nastavení voleb pro zachytávání síťové komunikace v programu Wireshark
41
5. Sjednocená autentizace uživatele na základě jednoho účtu (SSO) Single Sign-On (SSO) je způsob sjednocené autentizace uživatele na základě jednoho přihlášení do systému. Uživatel získá přístup ke všem zdrojům bez nutnosti další autentizace. Nejjednodušší vysvětlení konceptu SSO nabízí následující obrázek, ve kterém je SSO realizováno za pomoci OpenID.
Obrázek 9: Znázornění rozdílu mezi nepoužitím / použitím SSO [18] Dnešní uživatelé internetu jsou nuceni mít zaregistrované velké množství uživatelských účtů, s rozdílnými jmény (obvykle nechtěně), na různých webech. Ke všem těmto účtům si musí pamatovat heslo. Daná situace je velmi neefektivní. Rozhodně by bylo lepší mít pouze jednu identitu a ještě jednu s pseudonymem kvůli udržení soukromí, než stovky uživatelských účtů. Velká řada IT firem nabízí řešení pro sjednocenou autentizaci mezi různými systémy a větší společnosti nelitují investic do těchto SSO systémů, protože přináší úsporu času uživatelům a tím i zefektivnění práce, která přináší další zisk. Proto se daná oblast velmi perspektivně rozvijí.
5.1. SSO mezi systémy Joomla! a Moodle za použití LDAP Za předpokladu, že je již LDAP server nakonfigurován a v CMS Joomla! je nakonfigurována autentizace uživatele pomocí LDAP protokolu, se můžeme pustit do nastavení zjednodušení autentizace (SSO) mezi více systémy. Pro potřeby VOŠIS je zajímavé zejména řešení SSO mezi CMS Joomla! a Moodle, které v následujícím odstavci předložím.
42
Nejlépe vyhovující bude použití již zmíněného bezplatného rozšíření JFusion. [19] Pro instalaci JFusion se přihlásíme uživatelským účtem s patřičným oprávněním. Klasickým již vysvětleným způsobem nainstalujeme tuto komponentu. Poté je nutné ji řádně nakonfigurovat. V menu Components -> JFusion -> Configuration. V nastavení zvolíme plugin joomla_int jako Master, povolíme volbu Check Encryption, Dual Login a Registration. V pluginu moodle zvolíme volbu Slave, Check Encryption, Dual Login a u registrace si můžeme zvolit, zda chceme, aby si nový uživatelé mohli vytvářet své účty i přes Moodle. Po konfiguraci autentizačních pluginů JFusion přejdeme do Cpanelu JFusion (Components -> JFusion -> Cpanel). V Cpanelu povolíme plugin JFusion. Následně přejdeme na konfigurace Joomla! pluginů a nastavíme správné pořadí autentizačních zásuvných modulů. V mém případě bude pořadí takovéto: 1) Authentication – LDAP 2) Authentication – JFusion 3) Authentication – Joomla Také je potřeba zkontrolovat zdali je zapnutý plugin: User – JFusion. Kontrolu správné funkcionality JFusion můžeme provést v Login Checkeru (Components -> JFusion -> Login Checker). V neposlední řadě je potřeba přidat položku do menu s typem položky JFusion. Nastavit patřičný titulek, v mém případě Moodle. Také můžeme nastavit přístupová práva. Logické je nastavit přístupové právo Registered, kdy se daná položka menu bude zobrazovat jen autentizovaným uživatelům. Zvolit správný JFusion Plugin, který lze zvolit jen ze seznamu již povolených a nakonfigurovaných pluginů, zvolím plugin moodle. Dále volím, zdali chci otevřít nové okno (Frameless) s obsahem daného systému (Moodle) nebo daný obsah vložím do aktivního okna (Wrapper). Pokud vkládám pomocí funkcionality wrapper, můžu zvolit zda chci povolit scrollbary a rozměry daného vnitřního okna. Tímto způsobem lze nastavit jednoduše SSO v prostředí CMS Joomla! mezi systémy, které JFusion podporuje. Díky tomuto řešení se uživatelé nemusejí autentizovat vícekrát a tím ušetří spoustu času, navíc si nemusí pamatovat další uživatelské jméno a heslo. Celý systém funguje tak, že se uživatel přihlásí v CMS Joomla!, autentizace proběhne za pomoci LDAP protokolu. Pokud je uživatel autentizován, zobrazí se mu v menu položka s názvem Moodle. Po kliknutí na tuto položku přejde do systému Moodle a je již autentizován.
43
Uživatel
Joomla!
Přihlášení
Moodle
Ověření
Uživatel ověřen [ne] [ano]
Uživatel autentizován, SSO pro Moodle LDAP server Práce s Joomla!
Kliknutí na Moodle
Uživatel autentizován
Práce s Moodle
Odhlášení z Joomla!
Odhlášení
Odhlášen
Obrázek 10: Diagram aktivit zobrazující SSO autentizaci uživatele mezi CMS Joomla! a LMS Moodle
5.2. PLDAP-PHP Universal LDAP Single-Sign-On PLDAP-PHP Universal LDAP Single-Sign-On je konektor poskytující funkcionalitu SSO napsaný v jazyce PHP, který je volně šiřitelný. Podporuje Microsoft AD, IBM Domino, Novell eDirectory a Open LDAP. Tento PHP kód je možno využít do nově vznikajícího projektu nebo implementovat do stávajícího. Jeho zdrojový kód je volně dostupný z: http://sourceforge.net/projects/phpunildapsso/. [20]
5.3. Novell SecureLogin Novell SecureLogin je řešení jednotného přihlašování v rámci organizace pro webové stránky a podporované aplikace (Single Sign-On). Skládá se ze dvou částí klient/server. Serverová část je modul pro Novell NetWare. Klientská část musí být nainstalována na všech uživatelských počítačích. Uživatel při návštěvě webové stránky může uložit své přihlašovací informace (Credentials) za pomoci Novell 44
SecureLogin. Tyto informace se uloží na server, konkrétně do eDirectory. Při dalším přístupu na stejný web nebo systém, kde již má uloženy přihlašovací informace, se nemusí znovu přihlašovat. Činnost vyplnění login boxu za něj provede Novell SecureLogin. [21]
5.4. OpenID OpenID je v dnešní době nejrozšířenějším systémem autentizace uživatele. Myšlenku realizoval roku 2005 Brad Fitzpatrick1. Za úkol má snížit počet internetových uživatelských účtu optimálně na jeden. Výhody, které skýtá tento systém jsou v podobě vlastnictví jediné internetové identity, nutnosti zapamatování jediného hesla, které pak může a zároveň by mělo být velmi silné v zamezení odcizení této identity. OpenID je decentralizovaná síť poskytovatelů (providerů), kterých je velké množství. Tento zásadní aspekt přispívá k tomu, že OpenID nebude nikdo vlastnit a tak je zaručeno, že OpenID API bude vždy vydáváno pod licencí svobodného software. OpenID nabízí webovým vývojářům knihovny, ve kterých najdete již vytvořené prvky pro autentizaci uživatele a to včetně zdrojových kódů k velkému množství CMS a programovacím jazykům na webu. Jedná se především o tyto systémy: Drupal, Wordpress, MediaWiki, DokuWiki a phpBB. Redakční systém Joomla! v základní funkcionalitě již obsahuje plugin pro autentizaci uživatele za pomoci OpenID, který pochází přímo od vývojářů Joomla!. Zdrojové kódy pro autentizaci uživatele pomocí OpenID jsou dostupné pro nejpoužívanější programovací jazyky na webu a pro Apache web server. Dostupné OpenID je pro tyto jazyky: C#, C++, Coldfusion, Haskell, Java, Perl, PHP, Python, Ruby on Rails a Squeak/Smalltalk. [22] Do kategorie ověřených providerů, které poskytují pouze službu OpenID patří: ClaimID, myOpenID, myID.net, VeriSign’s Personal Identity Provider, myVidoop. Moje internetová identita je zde: http://martindavid.myopenid.com/ [22] V zahraničí je OpenID využíváno ku příkladu těmito společnostmi: AOL, BBC, Blogger, Drupal, Facebook, France Telecom, Google, IBM, Joomla!, LiveDoor, Microsoft, Mixi, Moodle, MySpace, Novell, Orange, PayPal, SourceForge, Sun Microsystems, Technorati,
Telecom Italia, Yahoo!,
VeriSign, Wordpress a mnoha dalšími. Na českém internetu byla mezi prvními integrátory služby OpenID společnost Seznam.cz, v závěsu za ní pak Centrum.cz. [22]
1
V roce 1999 vymyslel a naprogramoval memcached. Kód, který cachuje dotazy do databáze a tím razantně snižuje jejich počet a tak zrychluje odezvu celé webové aplikace. Tento kód využívá většina tzv. Webů 2.0 (YouTube, Wikipedia, Facebook, atd.). Brad Fitzpatrick je také zakladatelem služeb LiveJournal a blogovací služby Vox (která je populární hlavně v USA).
45
5.5. Google Mail Není jen emailová služba od firmy Google Inc., ale dá se použít i jako identity provider, kterým je možné se autentizovat k rozličným službám patřícím nejen společnosti Google.
5.6. Windows Live ID Služba od firmy Microsoft, dříve známá jako Microsoft Wallet, Microsoft Passport, .NET Passport, Microsoft Passport Network. Slouží především pro přístup k webům vlastněných nebo spřízněných společnosti Microsoft (microsoft.com, mdsn.cz, dreamspark.com, atd.).
46
6. Závěr Cíl dané bakalářské práce jsem splnil bez výjimky. Za vlastní přínos v této práci považuji vytvoření systému pro správu obsahu pro Erasmus na VOŠIS. Čas ukáže, jestli a jak se daný systém bude používat. Zejména si pak velmi cením konfigurace vlastními silami LDAP serveru, vytvoření adresářového stromu a zejména nastavení přihlašování za pomoci LDAP protokolu v systému Joomla! i Moodle. Tato poslední zmíněná věc se zdála být dle příspěvků na oficiálních fórech (i ostatních zdrojích) obou systémů, možná jen v teoretické rovině. Přesto se mi jí povedlo přenést z teoretických poznatků do reálné podoby funkčního systému. Celou praktickou část jsem zdokumentoval a dal k dispozici na přiloženém DVD. Taktéž je dobrý návrh řešení pro troubleshoting při LDAP user binding, který spočívá v odchytávání komunikace mezi systémem a LDAP serverem v programu Wireshark a porovnávání plánovaného výsledku s výsledkem aktuálním. Většinu praktických poznatků ohledně systému pro správu obsahu Joomla! jsem nabyl již dříve a to při analýze a nasazení CMS Joomla! pro rakouskou univerzitu v předmětu Projekt vedený paní PhDr. Helenou Kučerovou a také při pracovní stáži programu Erasmus v Plymouthu, kde jsem implementoval tento redakční systém pro plymouthskou personální agenturu nabízející pracovní pozice. Nicméně protokol LDAP pro mě byl před začátkem práce víceméně neznámý. CMS Joomla! je velmi rozsáhlý, jednak počtem dostupných rozšíření a také zejména možností různých nasazení od blogu, diskuzního fóra, fotogalerie, až po komunitní web a zpravodajský portál. Je stabilní, má velkou uživatelskou komunitu a aktualizace vychází často a v pravidelných intervalech. Je jen otázkou času, kdy se v ČR vyrovná daleko používanějšímu Drupalu.
47
7. Seznam obrázků 1. Rodina nástrojů, které tvoří řešení pro správu podnikového obsahu (ECM) [2] 2. Příklad grafického vzhledu frontend aplikace Joomla! (návrh pro Erasmus VOŠIS) 3. Vzhled backend aplikace CMS Joomla! 4. Zjednodušené schéma kategorizace obsahu v CMS Joomla! 5. Skládaný Vennův diagram znázorňující uživatelské role 6. Schéma vytvořeného Novell eDirectory Tree 7. Názorná ukázka atributů v LDAP serveru 8. Nastavení voleb pro zachytávání síťové komunikace v programu Wireshark 9. Znázornění rozdílu mezi nepoužitím / použitím SSO *16] 10. Diagram aktivit zobrazující SSO autentizaci uživatele mezi CMS Joomla! a LMS Moodle
48
8. Použité zdroje [1] AIIM - What is ECM? [Co je ECM?] [online]. 2008 [cit. 2009-07-13+. Anglicky. Dostupný z WWW:
. Internetový článek o Enterprise content managementu z pohledu asociace, která je v této oblasti průkopníkem. [2] BERÁNEK, Michal. ECM není jen pro velké společnosti. Small Business Solutions *online+. 2007, roč. 1 *cit. 2009-07-13+. Dostupný z WWW: . [3] BOIKO, Bob. Content Management Bible. 2nd edition. Indianapolis, USA : Wiley Publishing, 2004. 1176 s. ISBN 076454862X. Velmi obsáhlá kniha, která se obecně zabývá systémy pro správu obsahu. [4] AUSTERBERRY, David. Digital Asset Management. 2nd edition. Focal Press, 2007. 352 s. ISBN 0240808681. [5] BRABEC, Milan. Jste připraveni na Enterprise Content Management?. IT Systems *online+. 2003, příloha 1-2 [cit. 2009-07-13+. Dostupný z WWW: . [6] DotNetNuke Corp. DotNetNuke: Community, content, collaboration [online]. c2002-2009 [cit. 2009-07-13+. Dostupný z WWW: . [7] Telligent Systems. Telligent Community: Collaboration software, Enterprise online community [online]. [2008] [cit. 2009-07-13+. Dostupný z WWW: .
[8] Open Source Matters, Inc. Joomla! [online]. c2005-2009 [cit. 2009-07-13+. Dostupný z WWW: . Domovská stránka Joomla!, kde lze najít dokumentaci, jednotlivé rozšiřující komponenty, moduly a jazykové soubory, komunitní fórum a samozřejmě i vlastní instalační balíček, včetně jazykových mutací.
[9] OSIPOF, Peter, et al. VirtueMart : Features [online]. 2005-2009 [cit. 2009-07-13]. Dostupný z WWW: .
49
[10] BENÁK, Karel. Použití adresářových služeb v informačních systémech. Praha, 2004. 77 s. Vedoucí diplomové práce doc. RNDr. Jiří Demel, CSc. Diplomová práce seznamuje s protokolem LDAP, jeho použitím a návrhem základních datových typů, adresářových struktur a základních metod zabezpečení proti zneužití. [11] HOWES, Timothy A., SMITH, Mark C., GOOD, Gordon S. Understanding and Deploying LDAP Directory Services. 2nd edition. [Porozumění a nasazení LDAP adresářový služeb. 2. edice]. USA : Addison-Wesley Professional, 2003. 936 s. ISBN 672323168. [12] HARRIS, Jeffrey. Novell NetWare 6.5 : administrator's handbook. [Novell NetWare 6.5 : administrátorova příručka+. USA : Novell Press, 2003. 750 s. ISBN 789729849. Oficiální a nejpodrobnější publikace o síťovém operačním systému NetWare 6.5 vydaná přímo firmou Novell. [13] KILLPACK, Rick. eDirectory Field Guide. *eDirectory kapesní průvodce+. New York, USA : Apress, 2005. 304 s. ISBN 1-59059-553-X. Publikace popisující nastavení Novell eDirectory. [14] BUCHNER, Alex. Moodle Administration : An administrator's guide to configuring, securing, customizing, and extending Moodle. *Administrace Moodle : Administrátorův průvodce k nastavení, zabezpečení, přizpůsobení a k rozšíření Moodle+. Birmingham, UK : Packt Publishing, 2008. 376 s. ISBN 1847195628. Kniha detailně popisuje administraci LMS Moodle. [15] LDAP authentication [LDAP autentizace]. [online]. 2009 [cit. 2009-07-13+. Dostupný z WWW: . Oficiální dokumentace možnosti LDAP autentizace v Moodle. [16] Apache Software Foundation. Apache Directory Studio [online]. 2003-2009 [cit. 2009-07-13]. Dostupný z WWW: . [17] OREBAUGH, Angela, et al. Wireshark & Ethereal network protocol analyzer toolkit. [Wireshark & Ethereal nástroj pro analyzování síťového protokolu]. Syngress Publishing, 2006. 448 s. ISBN 1597490733. [18] THOMAS, Benjamin. OpenID Explained *OpenID vysvětleno+ [online]. [2008] [cit. 2009-07-13]. Dostupný z WWW: .
50
[19] RIJNSOEVER, Van Marius, et al. JFusion : Joomla Universal User Integration [online]. 2007-2009 [cit. 2009-07-13+. Dostupný z WWW: . [20] CHEN, Liber. PLDAP-PHP Universal LDAP Single-Sign-On [online]. 2009 [cit. 2009-07-13]. Dostupný z WWW: . [21] Novell SecureLogin [22] OpenID Foundation. OpenID [online]. 2006-2009 [cit. 2009-07-13]. Dostupný z WWW: . [23] GRAF, Hagen. Building Websites with Joomla! 1.5 : The best-selling Joomla! tutorial guide updated for the latest 1.5 release (Paperback). *Tvorba webů na Joomla! 1.5 : Joomla! Průvodce krok za krokem k aktuální verzi 1.5 (měkká vazba)+. Birmingham, UK : Packt Publishing, 2008. 384 s. ISBN 184719530X. Údajně neprodávanější kniha zaměřená na redakční systém Joomla!. [24] MOFFATT, Sam. Joomla! Authentication Tools *Joomla! nástroje pro autentizaci+. *online+. *2008+ [cit. 2009-07-13+. Anglicky. Dostupný z WWW: . Online dokumentace komponenty rozšiřující funkcionalitu jádra systému Joomla! pro autentizaci uživatelů přímo od svého tvůrce. [25] KENNARD, James. Mastering Joomla! 1.5 Extension and Framework Development : The Professional Guide to Programming Joomla! (Paperback). *Ovládnutí Joomla! 1.5 vývoj rozšíření a framework : Profesionální průvodce k programování Joomla! (měkká vazba)]. Birmingham, UK : Packt Publishing, 2008. 488 s. ISBN 1847192823. Další kniha určená hlavně programátorům, kteří mají zájem si naprogramovat vlastní komponenty, také detailně popisuje jádro systému. [26] RAHMEL, Dan. Professional Joomla!. *Profesionálně Joomla!]. Indianapolis ,USA : Wiley Publishing, 2007. 480 s. Programmer to Programmer. ISBN 978-0-470-13394-1. Kniha popisuje redakční systém Joomla!. Zejména je určená programátorům, kteří mají zájem vyvíjet vlastní komponenty k CMS Joomla!. [27] NORTH, Barrie M. Joomla! 1.5: A User's Guide : Building a Successful Joomla! Powered Website. 2nd edition. *Uživatelův průvodce : Tvorba úspěšného webu postaveného na Joomla! 2. edice+. New Jersey, USA : Prentice Hall, 2009. 443 s. ISBN 9780137012312. 51
[28] BUTCHER, Matt. Mastering OpenLDAP : Configuring, Securing and Integrating Directory Services. *Ovládnutí OpenLDAP : Nastavení, zabezpečení a integrování adresářových služeb+. Birmingham, UK : Packt Publishing, 2007. 484 s. ISBN 1847191029. Publikace detailně popisuje protokol OpenLDAP. [29] MEŠKO, Dušan, KATUŠČÁK, Dušan, FINDRA, Ján. Akademická příručka. Editorka Marie Krčmanová. 2006. 481 s. ISBN 80-8063-219-7. Příručka obsahuje pokzny a doporučení jak tvořit odborný text, jak se připravit na veřejné vystoupení, jak psát seminární, bakalářskou, diplomovou, disertační a habilitační práci , odborný článek a abstrakt. Jak postupovat při zpracování a prezentaci výsledků studentské vědecké a odborné činnosti. [30] PAPÍK, Richard. Competitive Intelligence, informační služby, Internet a informační profese. Ikaros *online+. 2001, roč. 5, č. 4 *cit. 2009-03-20+. Dostupný z WWW: . URN-NBN:cz-ik739. ISSN 1212-5075. Článek inženýra Richarda Papíka, detailně popisující možnosti vyhledávání informací. Zahrnuje způsoby vyhledávání v katalozích knihoven, na internetu, v online databázích apod.
52