LDAP (Lightweight Directory Access Protocol)

Kalle Korenius



Hakemistopalveluista

Kun haluamme soittaa puhelimella jollekin henkilölle, tarvitsemme hänen puhelinnumeronsa. Jos emme tiedä puhelinnumeroa, voimme katsoa sen puhelinluoettelosta tai esimerkiksi soittaa numerotiedusteluun. Puhelinluettelo on hakemisto, joka sisältää henkilön nimen ja puhelinnumeron, sekä mahdollisesti muita tietoja henkilöstä. TCP/IP-verkoissa käytössä oleva nimipalvelu DNS (Domain Name System) tarjoaa samankaltaisen palvelun ja sitä voidaan pitää yksinkertaisena hakemistopalveluna. Käytännössä se ei kuitenkaan auta esimerkiksi henkilön sähköpostiosoitteen löytämisessä. Verkkoresurssin paikantaminen vaatii sen osoitteen muistamisen, ja nimipalvelimen rooliksi jää selkokielisen osoitteen muuntaminen numeromuotoiseksi verkko-osoitteeksi. Internetin ja intranettejen tehokkaan hyödyntämisen edellytyksenä on kattavat osoite- ja palveluhakemistot. Sovelluksissa tarvitaan 'todellisiin' tietoihin, kuten henkilöiden ja organisaatioiden nimiin, perustuvia hakemistoja, joihin voidaan tallettaa pelkän nimen ja verkkopaikanteen lisäksi myös muita tietoja [3].

Ei ole syytä rajata hakemiston käyttöä pelkästään ihmisten ja organisaatioiden kontaktitietoihin, vaan sitä voidaan hyödyntää monenlaisissa yhteyksissä. Hakemistoon voidaan esimerkiksi sijoittaa erilaisia laitteistotietoja järjestelmähallintaa varten. Järjestelmän käytettävyyden kannalta on myös erityisen tärkeää, että tiedon hakemiseen ja ylläpitoon on monipuolisia mahdollisuuksia.

Vuonna 1988 syntynyt X.500-standardi (ITU-T) määrittelee OSI-mallin mukaisen avoimen hakemistopalvelun. X.500-standardissa sovellukset keskustelevat DUA:n (Directory User Agent) kautta hakemistopalvelimen eli DSA:n (Directory System Agent) kanssa. Hakemisto voidaan hajauttaa ympäri verkkoa sijaitseviin DSA-palvelimiin. DUA:n ja DSN:n välillä keskusteluprotokollana toimii DAP (Directory Access Protocol) [4]. Hakemistopalvelimiin tieto on järjestetty oliohierarkiaan, joka vastaa tietojen loogista - esimerkiksi liiketoiminallista tai maantieteellistä - hierarkiaa, eikä itse verkon rakennetta [3].

Muista hakemistopalveluista esimerkkeinä mainittakoon internetin tekstipohjainen WHOIS ja Novel-verkkojen NDS (Novell Directory Services).

Mikä on LDAP?

X.500-standardin DAP käyttää OSI-pinoa keskustellessaan verkon yli ja on sekä raskas, että monimutkainen. Jotta hakemistopalvelut saataisiin laajempaan käyttöön oli tarvetta kevyemmälle protokollalle, jota voitaisiin ajaa myös heikkotehoisilla työasemilla. Näistä tarpeista syntyi LDAP-rajapinta (Lightweight Directory Access Protocol). Ensimmäinen LDAP-määritys syntyi vuonna 1993 (RFC 1487) Michiganin yliopistossa. Nykypäivän IETF:n määrittelemä LDAP-standardi, LDAPv2, on kuvattu RFC 1777:ssä. RFC syntyi vuoden 1995 maaliskuussa.

LDAP tunnetaan myös nimellä X.500 Lite. Nimensä mukaisesti se tarjoaa kevyemmän ja yksinkertaistetun yhteystavan X.500-hakemistopalveluun. Se kulkee suoraan TCP:n tai muun luotettavan protokollan päällä ja tarjoaa vain tärkeimmät X.500-standardin määrittelemistä palveluista. Sillä on mahdollista tehdä asiakasohjelmista kevyempiä, nopeampia ja helpompia toteuttaa kuin X.500-standardin määrittelemät asiakasohjelmatoteutukset [2]. Asiakasohjelmana voi toimia esimerkiksi sähköpostiohjelman osoitemuistio, josta voidaan hakea henkilöiden ja organisaatioiden sähköpostiosoiteita nimen perusteella. Palvelu voidaan yhtä lailla toteuttaa sijoittamalla asiakasohjelma www-palvelimen alaisuuteen, jolloin tietoja voidaan hakea vanhemmallakin www-selaimella. Hakemistona voi toimia globaali, koko internet-verkon kattava osoitepalvelu, tai vastaavasti yrityksen itse ylläpitämä hakemisto omista työntekijöistä ja asiakkaiden tärkeimmistä kontaktihenkilöistä.

Kun LDAP-sovellus tarvitsee tietoa X.500 hakemistosta, lähettää se pyynnön LDAP-palvelimelle. LDAP-palvelin kääntää LDAP-palvelupyyntöjä X.500-palvelupyynnöiksi. LDAP-protokollan ensimmäiset määritykset eivät mahdollistaneet LDAP-palvelimien välistä kommunikaatiota. Se vaati X.500-protokollia myös hakemistopuun ja -palvelimien ylläpitämiseksi. X-500-palvelimien ylläpito on monimutkaista ja yhdyskäytävä LDAP-palvelimien ja X.500-palvelimien välillä muodostaa pullonkaulan haettaessa hyvää suorituskykyä hakemistojärjestelmälle. Tämän takia LDAPv2:een kehitettiin ominaisuuksia, jotka mahdollistavat hajautetun hakemiston rakentamisen käyttämällä pelkästään LDAP-palvelimia. Hakemisto voidaan yhtä lailla toteuttaa yhdistelemällä molempia palvelintyyppejä keskenään [2, 4].

Pintaa syvemmälle

LDAP on toiminnoiltaan X.500:n osajoukko. LDAP-rajapinta tarjoaa sovelukselle seuraavia toimintoja: bind (kytkeydy), unbind (pura yhteys), search (etsi), modify (muokkaa), add (lisää), delete (poista) ja abandon (luovuta). Bind-toiminnon tarkoituksena on avata istunto asiakasohjelman ja palvelimen välille. Palvelin tunnistaa käyttäjän identiteetin. Yhteys puretaan unbind-toiminnolla. Search-toiminnolla suoritetaan hakuja palvelimen tietohierarkiaan. Palvelimet on suunniteltu palvelemaan suurtaa määrää hakuja suorituskykyisesti. Add, delete ja modify -toiminnot mahdollistavat tietojen muuttamisen, lisäämisen ja poistamisen hakemistosta. Abandon-toiminnolla informoidaan palvelinta lopettamaan meneillään oleva hakuoperaatio [1].

LDAP-palvelimet muodostavat keskinäisen hierarkian, jossa alemman tason palvelimet ovat kytkettynä korkeamman tason isäntäpalvelimeen. Isäntäpalvelimet voivat päivittää alemman tason palvelimien hakemistohierarkiaa. Palvelin ei voi samanaikaisesti toimia isäntäpalvelimena omassa hakemistossaan ja asiakaspalvelimena ulkoisessa hakemistossa. Tämä aiheuttaa ongelmia tilanteessa, jossa halutaan esimerkiksi laajentaa organisaation sisäisen hakemiston käyttöä muihin organisaatioihin. LDAP-standardi ei määrittele isäntäpalvelimien välistä kommunikaatiota. Tiedon monistaminen hakemistojen välillä on siis toteutettava muilla keinoilla. Ongelmiin on luvassa parannuksia LDAPv3:ssa. [4].

Toteutuksia

Michiganin yliopistosta on saatavissa ilmaiset lähdekoodit LDAPv2-toteutukseen [3].

Huhtikuussa 1996 Netscape julkisti tukevansa yli 40 yrityksen kanssa LDAP-protokollaa hakemistopalveluissa [6]. Netscapen Directory Server versio 1.0 ilmestyi samana vuonna ja se sisältää LDAPv2-yhteensopivan hakemistopalvelintoteutuksen. Tällä hetkellä beta-asteella oleva Netscapen Directory Server 3.0 on rakennettu kehitteillä olevan LDAP versio 3 -standardin mukaiseksi. LDAP-tuki löytyy Netscapen SuiteSpot palvelintuoteperheestä, sekä uudesta Netscape Communicator -selaimesta [5]. Netscape on aktiivisesti kehittämässä LDAP-rajapintaan omia laajennuksiaan. Netscapen LDAP-toteutuksissa voidaan käyttää SSL-protokollaa (Secure Socket Layer) tiedon suojaamiseen.

Microsoftin tuleva NT 5.0 käyttöjärjestelmä sisältää Active Directory -palvelun, joka perustuu LDAP-protokollaan [7]. Microsoft on julkaissut yhteyistyössä Ciscon kanssa laajennuksen LDAP-protokollaan, jonka tarkoituksena on helpottaa tiedon replikointia laajoissa verkoissa [8].

 

Lähteitä

[1] RFC 1777 Lightweight Directory Access Protocol. W. Yeong, T. Howes & S. Kille. March 1995.
< URL: ftp://ftp.funet.fi/pub/standards/RFC/rfc1777.txt >

[2] Timothy A Howes, The Lightweight Directory Access Protocol: X.500 Lite. July 1995.
< URL: http://www-leland.stanford.edu/group/networking/directory/doc/ldap/ldap.html >

[3] Gordon Benett, LDAP: A Next Generation Directory Protocol, Intranet Design Magazine. 1996.
< URL: http://www.innergy.com/foundation/ldap.shtml >

[4] Dave Kosiur, LDAP: The next-generation directory?, SunWorld Online. October 1996.
< URL: http://www.sun.com/sunworldonline/swol-10-1996/swol-10-ldap.html >

[5] Netscape Directory Server FAQ
< URL: http://search.netscape.com/comprod/server_central/support/faq/directory_faq. html >

[6] Netscape Press Release, April 1996
< URL: http://home.netscape.com/newsref/pr/newsrelease126.html >

[7] Microsoft Directory Services Strategy
< URL: http://www.microsoft.com/ntserver/info/dsstrategy.htm >

[8] CNET News.Com, Microsoft to simplify directories, March 1997
< URL: http://www.news.com/News/Item/0,4,8997,00.html >



Lisätietoja aiheesta

FAQeja

LDAP FAQ by Mark Wahl (****)

An LDAP Roadmap & FAQ sekava, mutta sisältää paljon linkkejä (**)

Muita linkkejä

Lightweight Directory Access Protocol - University of Michigan Sisältää lähdeekon ja binäärit LDAPv2-toteutuksesta (*****)

Understanding LDAP & X.500 Sopivan tiivis artikkeli aiheesta (****)

A Scalable, Deployable, Directory Service Framework for the Internet (****)

Lightweight Directory Access Protocol (Version 3) Specifications (***)

Colin Robbin's Directory page at NEXOR - X.500 tietoutta (***)

Aiheeseen liittyviä RFC:itä

RFC1960 - A String Representation of LDAP Search Filters

RFC1959 - An LDAP URL Format

RFC1823 - The LDAP Application Program Interface

RFC1781 - Using the OSI Directory to Achieve User Friendly Naming

RFC1778 - The String Representation of Standard Attribute Syxtaxes

RFC1588 - White Pages Meeting Report

RFC1487 - Lightweight Directory Access Protocol