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:
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:
Az LDAP séma ASCII reprezentálására született ajánlás leírására a RFC2252-ben található.
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.
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.
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?