LDAP bevezető, elmélet


LDAP séma

A DIT csomópontjaiban található információt attribútum halmazok írják le absztraktul. Egy attribútum maga név azonosítót és egy vagy több érteket tartalmaz. Az attribútumnak van típusa (string, numeric stb.), ami meghatározza a lehetséges értékek formai követelményeit (szintaxis) valamint egy összehasonlítási szabálya, ami szerint az értékeket azonosnak tekinthetőek (pl.: caseIgnoreMatch - ki és nagybetű különbségére érzéketlen).

Egy LDAP osztály meghatározza, hogy egy őt reprezentáló adatnak mik a kötelező és a lehetséges attribútumai, valamint definiálja ezeket az attribútumokat az előbb bemutatott jelmezőkkel. Az osztályok között egyszerű egyszeres öröklődés valósítható meg. Az LDAP séma nem más, mint a rendszer által használható LDAP osztályok definíciója.

Az LDAP szabvány előírja, hogy minden attribútum és osztály névnek globálisan egyedinek kell lennie ezért minden séma elemet (attribútum definíciót és osztályt) globálisan egyedi azonosítóval látnak el. Ez az azonosító az OID (Object Identifier). Az OID-ok maguk szám halmazok, amik hierarchikusan épülnek fel (pl.: Internet OID-ja: 1.3.6.1) és formátumukat az X.208 ITU szabvány definiálja. Ha valaki hiányol bizonyos attribútumokat akkor séma kiegészítéssel élhet, de ehhez először illik OID szám tartományt igényelni az IANA (Internet Assigned Numbers Authority) szervezetnél. Igyekezzünk ellenállni annak a csábításnak, hogy saját OID tartományt igényeljünk. Csak akkor éljünk ezzel a megoldással ha tényleg nem találunk más megoldást. Tesztelésre és helyi rövid idejű felhasználásra az 1.1.x alakú OID-okat vehetjük igénybe. Az OID-okat nem csak az LDAP sémánál, hanem az SNMP objektumok azonosítására is használatosak.

Az osztályokat megvalósító adatoknak rendelkezniük kell speciális attribútumokkal, mint például:

  • Objectclass: megadja, mely objektumokat valósítja meg az adott adat,
  • az adott hierarchia szinten érvényes RDN-t mindenképpen tartalmaznia kell (pl.: ha a DN cn=Szalai Ferenc,o=Gluon,c=hu, akkor cn attribútumot mindenképpen definiálni kell)
  • az LDAP szerver maga még bejegyezhet néhány speciális belő attribútumot többek között a bejegyzés készítésének időpontját, készítőjét, utolsó módosításának idejét stb.

Az LDAP séma készítésekor és a megfelelő objektumok kiválasztásakor figyelembe kell vennünk, hogy az objektumoknak is van típusa:

  • Abstract: az öröklődés alaposztályai tartoznak ebbe a csoportba. Az adatok az ilyen osztályokat nem valósítják meg közvetlenül. A legtipikusabb példája a top objectclass, ami minden osztály ősosztálya.
  • Structural: minden adatnak pontosan egy ilyen típusú ilyen osztályt valósíthat meg. Az előző szabály alkalmazásánál figyelembe kell venni az öröklődési függőséget is. Például ha egy A structural objectclass szülője B structural objectclass-nak akkor az adat megvalósíthatja A és B-t is. Az ilyen típusú objectclass-ok írják le a legalapvetőbb dolgokat, mint személyek (Person), intézmények (Organization) stb.
  • Auxiliary: kiegészítő attribútumokat határoznak meg és egy adat tetszőleges számú ilyen típusú objectclass-t megvalósíthat.

Az LDAP séma ASCII reprezentálására született ajánlás leírására a RFC2252-ben található.

LDAP adatok ASCII reprezentációja - LDIF

Számos esetben hasznos lehet az LDAP adatok szöveges formátumú platform független reprezentációjára. Például különféle LDAP szerverek közötti adatmigráció az egyik tipikus felhasználás, de igen hasznos lehet, ha az LDAP szerver adatait emberi fogyasztásra szánjuk. Erre találták ki a LDAP Data Interchange Formatot (LDIF). Egy konkrét példa egy minta LDIF bejegyzésre az alábbi:

dn: cn=Szalai Ferenc,ou=Gluon,c=hu
objectclass: top
objectclass: person
objectclass: posixaccount
cn: Szalai Ferenc
sn: Szalai
mail: szferi@gluon.hu
loginShell: /bin/bash
uidNumber: 1000
gidNumber: 1000
HomeDirectory: /home/szferi

Mindig az első sorban található az adatelem teljes DN-je. Utána jönnek az attribútum név és érték párok kettősponttal elválasztva. Ezeknek a sorrendje nem meghatározott. A többszörös értékű attribútumok többször vannak felsorolva. Az attribútum nevekben a nagy és kisbetűket nem különböztetjük meg egymástól.

Szalai Ferenc | 2006, május 29 - 08:15 | |
Tomka Gergely (nem ellenőrzött), 2006, június 23 - 15:13

Az attribútumok leírása kicsit tömör. Remélem, a következőre gondolsz:

Egy attribútum:
suly=89
Az attribútum neve suly, típusa valós szám, értéke 89.
Egyenlők, ha a különbségük egynél kisebb

Ez stimmt?

Egy LDAP osztály:
- áll sok attribútumból
- meg egy azonosítóból, ami a fa hozzá vezető csomópontjainak jegyzéke, aka DN.

Az egyszerű öröklődés:

Ha az N-edik szinten a fában van egy allat nevű osztály, aminek a DN-je legyen mondjuk
planet=earth,category=living_things,kingdom=animals
Ez egy csomópontot definiál, ahol több ilyen információ is lehet, például van planet=earth,category=living_things,kingdom=plants is.

A category egy csomópont a fában (DIT), és ebben a cosmópontban van több adat, mint pl. a living_things, rocks, sky, ghosts?

A kingdom egy másik csomópont, amiben van mondjuk a plants meg az animals, mint adat?

Szalai Ferenc, 2006, június 23 - 15:36

Attribútum: igen

LDAP osztály: van neve, vannak kötelező és nem kötelező attribútumai, van OID-je. Az osztály egy konkrét példányának van DN-je.

Öröklődés: A leírtak nem az öröklődéssel, hanem a DIT szerkezetéből adódnak, semmi köze az öröklődéshez. Az öröklődés az osztályokra vonatkozik, azaz, ha People osztály kötelező attribútuma a CommonName és az PhoneNumber akkor, ha van egy OrganizationalPeople nevű osztály, ami a People osztálytól öröklődik, akkor annak is ezek kötelező attribútumai lesznek, de lehet ennek neki további kötelező attribútuma is. A DIT egy eleme, pedig az osztályok közül egy vagy többet valósít meg.

Anonymous (nem ellenőrzött), 2006, június 23 - 16:04

Nem akarsz erről is kis ábrát rajzolni? Vagy rjazoljak én, és kijavítod?

Szalai Ferenc, 2006, június 23 - 16:28

Ha rajzolsz megköszönöm és beleteszem.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.