Celý svět je plný nejrůznějších informací. Některé jsou důležité, některé ne. Jejich společným atributem je jejich chaotické umístění v nezávislosti na jejich významu a obsahu. Ano, největším problémem dneška není neexistence hledaných dat, ale problém leží v jejich neuspořádanosti a tudíž špatné přístupnosti.
Podobné je to u lidí pokud chcete někoho kontaktovat a znáte dokonce i jméno a snad i zemi kde bydlí, neznamená to, že tuto osobu dokážete najít. Lidí, podobně jako informací, je opravdu mnoho.
X.500
Řešením je důsledné a kompletní uspořádání informací o všem, kde je to možné. Proto organizace OSI (Open System Interconnection) definovala specifikaci protokolu X.500, který je vlastně objektovým adresářovým systémem. První specifikace byla definována roku 1984 a posléze doplněna roku 1988. Původně byla specifikace X.500 určena pro využití ve spolupráci s dalším protokolem organizace OSI X.400, který je určen pro provoz elektronické pošty.
Některé termíny a specifikace proto z tohoto protokolu vycházejí nebo na něj navazují. Později byl však cíl X.500 rozšířen na obecný objektový adresářový systém pro použití v síťovém světě.
Základem je objekt
Základem definici je objekt, který reprezentuje reálný objekt ve skutečném světě. Tímto objektem může být cokoliv, co má smysl nějak hiearchicky řadit, např. člověk, stanice v síti atd. Každý objekt je označen rozlišovacím jménem (Distinguished Name - DN) a má příslušné atributy, které určují jeho vlastnosti. Jaké atributy jsou pro který typ objektu vhodné, je definováno specifikací X.521.
Stromová struktura
Co je na celé specifikaci natolik přitažlivé? Je to distribuovaný charakter databáze objektů. Tato databáze je nazývána jako adresářová informační báze (DIB - Directory Information Base) a je uvažována jako globální systém, který může být rozprostřen po jednotlivých logických částech po celém světě.
Ovšem pro programy a systémy, které potom s touto informační bází pracují, se tváří jako celek, a přístupové algoritmy neznají strukturu rozložení báze. Vlastní technická implementace není ve specifikaci definována a je na producentu aplikace, jak se s tímto vypořádá.
Logicky je databáze uspořádána do adresářového informačního stromu (DIT - Directory Information Tree). Jeho nejvyšším objektem je svět, který je dále dělen na jednotlivé země, následně organizace a na posledním místě stojí konkrétní objekty. V dalším textu budeme pracovat s nejpoužívanější implementací X.500 pro adresářový systém osob.
X.500 rozlišuje dva typy jména objektů. Jedním je tzv. relativní rozlišovací jméno (RDN), které definuje název objektu v rámci nejbližší entity, tj. země nebo organizace. Druhým je unikátní jméno, který definuje jednoznačně objekt v rámci celého adresářového stromu. Toto jméno získáme tak, že začneme od spodu stromu se jménem objektu a postupně, jak postupujeme nahoru přidáváme jména entit, pod které předchozí objekt spadá.
Distribuce
X.500 je distribuovaný adresářový systém, který není spravován na jednom místě. Důvodů je hned několik. Především globální adresář takového rozsahu je téměř nemožné rozumně spravovat, aby se dosáhlo stability a aktuálnosti údajů. A také neexistuje organizace, která by mohla na tuto správu vynakládat peněžní prostředky.
Proto každá entita může být spravována někým jiným a pomocí definovaných protokolů komunikuje s vyšší strukturou adresáře. Samozřejmě, že jediná osoba nebo organizace může zodpovídat za více takových entit nebo může spravovat větší adresní prostor podle logického rozdělení. Tak např. firma spravuje adresář svých oddělení, která zase spravují adresář svých pracovníků. Tak je dosaženo malého zatížení jednotlivých "pater" stromu a zároveň možnosti data rychle aktualizovat.
Některé organizace jsou určeny pro správu nejvyšších domén jednotlivých zemí, jako např. Ansi pro USA. Tyto organizace potom přidělují jména i přezdívky, tak aby v jejich prostoru nedocházelo ke kolizím těchto jmen. Aby to nebylo tak jednoduché, je možné definovat ještě tzv. přezdívky (alias). Ty příslušejí objektu, který je pak možné nalézt, jak pod pravým jménem, tak pod touto přezdívkou. Tu nemusí mít jen koncové objekty, ale i podstromy.
Bezpečnost
Kromě požadavku na vytvoření globálního adresářového systému v době tvorby X.500 existovala také nutnost tento systém zabezpečit před neoprávněným použitím nebo zásahy do něj. Proto má každý objekt definována práva pro různé uživatele. V závislosti na těchto právech mohou uživatelé přidávat, mazat nebo prohlížet objekty v adresáři.
Pokud uživatel nemá k příslušnému objektu práva na prohlížení, nejen že není schopen zobrazit jeho atributy, ale dokonce tento objekt nevidí. To je poměrně důležité, protože X.500 je určeno také pro implementaci telefonních seznamů, kde některá čísla jsou tajná a nesmí být přístupná všem, zatímco adresář obecně naopak všem přístupný být musí.
Práce s X.500
Dobrá, známe tedy vlastní strukturu, jak se s adresáři pracuje? Nejprve se na práci s X.500 podíváme z uživatelského hlediska, potom přejdeme k technické implementaci.
Uživatel má k dispozici několik možných způsobů, jak pracovat s X.500. Existují speciální klienti, kteří jsou schopni komunikovat několika možnými způsoby. Potom je možné přes speciální servery používat internetovské protokoly jako Telnet, WWW a elektronickou poštu. V těchto případech s vlastím serverem X.500 komunikuje až server, který od vás dostává příkazy pro prohledávání nebo prohlížení adresáře. V prvním případě přistupuje definovanými protokoly k X.500 již váš klientský program.
Ten se nazývá DUA (Directory User Agent) a komunikuje s adresářem pomocí protokolu DAP (Directory Access Protocol). Zde je nutné opustit určité zjednodušení, jehož jsem se dopustil. Ačkoliv mluvím o adresáři jako celku, ten je tvořen jednotlivými DSA (Directory System Agent), které obsluhují příslušné adresářové celky.
DUA vždy komunikuje s jedním DSA, který pokud nemůže rozlišit jméno ve své oblasti, obrátí se na jiný DSA, o kterém se domnívá, že jméno bude znát. Takto probíhá komunikace mezi DSA, až je nakonec jméno nalezeno. To je nakonec vráceno pomocí DSP vlastnímu DUA, který je zobrazí uživateli. Pro komunikaci mezi DSA je použit protokol DSP (Directory System Protocol). Ten má k dispozici několik podprotokolů, kterými obsluhuje žádosti DSA agentů.
Funkce
Protokol DAP poskytuje čtyři základní skupiny funkcí pro komunikaci s adresáři.
- Spojení a rozpojení (Bind a Unbind)
Před vlastní komunikací se musí DAP přihlásit na DSA a poskytnout mu údaje o uživateli. Teprve po navázání spojení je možné zasílat požadavky na další operace s adresářem. Právě pomocí údajů zaslaných v této relaci jsou nastavena práva uživatele pro další práci. Po skončení práce se serverem se DUA odhlásí pomocí rozpojovacího požadavku.
- Tázací operace
K dispozici jsou čtyři tázací operace, které tvoří jádro práce s adresářovými systémy.
- Čtení
Pokud chce uživatel získat informace o hodnotách atributů některého objektu, který si předtím vyhledal, tak DUA pošle žádost na čtení dat zvoleného objektu.
- Porovnání
Možnost porovnat hodnotu atributu objektu s hodnotou, kterou specifikuje uživatel.
- Hledání
Většinou nevíme, kde přesně leží informace o hledané osobě. Proto se při hledání řídí DUA údaji, které zadá uživatel podle toho, co o objektu ví. Výsledkem hledání nemusí být samozřejmě jen jeden nález, většinou podle množství dat zadaných při hledání dostaneme celý seznam, ze kterého si potom vybereme požadovanou položku.
- Seznam
Pokud si chceme prohlédnout obsah určitého podadresáře, zašle DUA požadavek na seznam adresáře. Výsledkem je opět řada objektů.
- Modifikace
Zadané údaje je často nutné modifikovat, protože svět se rychle mění. Pro to je určena skupina modifikačních údajů. Data objektu může samozřejmě měnit pouze oprávněný uživatel nebo systém. Měnit lze v zásadě vše, od jednotlivých atributů po celková jména objektů.
- Zrušení operace
Většina operací probíhá poměrně dlouho a může se stát, že je nutné zastavit operaci, která právě probíhá. K tomu slouží příkaz Abandon.
Popsané příkazy vymezují možnosti protokolu DAP, který používá DUA. Tyto příkazy zasílá systému software, nikoliv uživatel, ať už je realizován jako samostatný klientský program nebo server pracující pomocí Telnetu. Jeden příkaz od uživatele může být důsledkem celé série příkazů zaslaných adresářovému serveru, které zpětně vyústí v jednu odezvu na obrazovce uživatele. Vše záleží na konkrétní implementaci. V současné době nejsou k dispozici příliš sofistikované programy, a tak víceméně pracují pomocí identických příkazů, jako jsou ty výše popsané.
Nevýhodou původní definice X.500 je nutnost výměny velkého množství dat a neustáleho propojení DUA a DSA při zadávání příkazů. Díky tomu je implementace X.500 na Internet velmi obtížná. Zde se totiž používá paketové nespojité komunikace, která není pro původní specifikaci X.500 vhodná.
Existuje ovšem protokol LDAP, který nahrazuje DAP schopný pracovat právě přes TCP/IP. Tento protokol také používá značně méně obsáhlých argumentů pro jednotlivé operace, takže tolik síť nezatěžuje.