LDAP (Lightweight Directory Access Protocol - Hafifletilmiş Dizin Erişim Protokolü)

Eyl 06, 2013
Dizin; elektronik ortamda belirli türden nesneleri içerisinde bulunduran ve bu nesneler arasında arama yapma imkanı veren yapıdır. Dizinlere örnek olarak; tutulan kişi listeleri, telefon rehberi, bir ağa dahil olan bilgisayarların listeleri ve bir şirkette çalışan personele dair tutulan kayıtlar verilebilir. Dizinlerin genel özellikleri incelendiğinde ise, yapısal depolama yaptıkları, bu depolamanın genellikle dağınık olduğu, içerdiği nesnelerin genellikle birbirlerinden bağımsız oldukları ve hiyerarşik bir düzende sıralandıkları görülecektir.

Dizin standartları 1988 yılında ISO-ITU tarafından X.500 standardı ile belirlenmiştir. X.500 standardı dizinlerin kullanımı ve erişimi ile ilgili dört farklı protokolü içerisinde barındırmaktadır. Bunlar; DAP (Directory Access Protocol - Dizin Erişim Protokolü), DSP (Directory System Protocol - Dizin Sistemi Protokolü), DISP (Dİrectory Information Shadowing Protocol - Dizin Bilgileri Gölgeleme Protocolü) ve DOP (Directory Operational Bindings Management Protocol - Dizin İşlemsel Bağlantı Yönetim Protokolü) ‘dür.  

LDAP (Lightweight Directory Access Protocol – Hafifletilmiş Dizin Erişim Protokolü) ise Michigan Üniversitesi'nde geliştirilen, son kullanıcıların kullanımı açısından oldukça karmaşık bir yapıya sahip olan X.500 standardına uygun olarak oluşturulmuş dizinlere erişimde kullanılan DAP protokolünün hafifletilmiş biçimidir. LDAP in bir başka oluşturulma amacı ise ilk zamanlarda DAP protokolünün sadece OSI (Open System Interconnection) referans modelini kullanmasıdır. LDAP protokolü ise TCP/IP protokolünü kullandığından dizinlere Web üzerinden de erişim imkanı sunmaktadır. Bir diğer önemli LDAP protokolü özelliği ise açık bir protokol olmasıdır. Bu sayede protokolün bilgi modeli geliştirilebilmekte ve verileri tutan sunucu çeşidinden bağımsız olarak verilere erişim sağlanabilmektedir.

LDAP açık bir protokol olması nedeniyle, günümüzde farklı uygulamalarda sıklıkla kullanılmaktadır. Linux işletim sistemlerinde OpenLDAP programı aracılığıyla kullanılan LDAP protokolü; Windows işletim sistemlerinde ise orta ve büyük ölçekli işletmelerde yaygın kullanıma sahip olan Aktif Dizin (Active Directory) hizmeti olarak yer almaktadır. Active Directory, yaptığı birçok işlemde (yeni kullanıcı ve yeni grup tanımlama, hâlihazırdaki kullanıcı bilgilerine erişme ve bu bilgileri güncelleme, nesneler arasında esnek sorgulama yapılabilmesi gibi işlemler) arka planda LDAP protokolünü kullanmaktadır. Ayrıca, Active Directory sunucusuna bağlanarak ihtiyaç duyulan verilerin alınması ve bu verilen düzenlenebilmesi LDAP aracılığıyla sağlanmaktadır.

LDAP veri yapıları incelendiğinde ise 3 temel özellik göze çarpmaktadır. Bunlardan birincisi LDAP verilerinin alt sınıflara ve hiyerarşik bir yapıya sahip olması, yani nesne tabanlı ve sıradüzensel bir yapıda olmasıdır. İkinci önemli özellik ise her nesnenin kendine özgü nitelik(attribute) ve değerlerden(value) meydana gelmiş olmasıdır. Bu nitelik ve değerler nesneyi dizinde bulunan diğer nesnelerden farklı kılmakta ve nesneyi tanımlamaktadır. Bu nedenle nesnelere ait nitelikler birden fazla değere sahip olabilmekte ve bu değerler metin ya da ikilik sistem verileri olabilmektedir. Üçüncü önemli özellik ise depolanan her nesneyi tanımlayan tek bir belirleyici ismin(distinguished name - DN) olmasıdır.

LDAP verileri hiyerarşik düzeni, oluşturulan nesnelerin içerdikleri farklı nitelikler sayesinde sağlanmaktadır. Belirli niteliklere sahip nesnelerin hiyerarşik bir düzende bir araya gelerek oluşturdukları yapıya ağaç(tree) adı verilmektedir. Bir ağaçta bulunan yapraklar nasıl farklı dallar aracılığıyla gövdeye ve sonrasında köke bağlanıyorsa, LDAP nesneleri de kendi içlerinde birbirlerinden farklı olsalar da ortak noktaları sebebiyle aynı grup içerisinde yer alabilmektedirler. Bu ağaç yapısının en üst kısmında kök(Root) dizin yer almaktadır. Kök dizin, organizasyonun dahil olduğu temel dizindir. Dizin hizmeti veren bir sunucunun belirleyici ismi(distinguished name) ise etki alanı öğeleri(Domain Component - DC) tarafından belirlenmektedir. Etki alanı öğeleri bir anlamda ağaç yapısının ana kimlik bilgilerini oluşturmaktadır ve bu ağaç yapısı içerisinde bulunan tüm nesneler için ortaktır. Hiyerarşik yapıda etki alanı öğelerinden sonra gelen yapılar ise organizasyon üniteleridir (Organizational Unit - OU) . Organizasyon üniteleri oluşturulan nesnelerin daha kolay ve daha esnek yönetimi amaçlı oluşturulmuş yapılardır. Bu organizasyon üniteleri kendi içlerinde yine amaca yönelik olarak başka organizasyon üniteleri de bulundurabilmektedirler. Organizasyon üniteleri altına oluşturulan nesneler ise kendilerine özgü ortak adlarla (Common Name - CN) birbirlerinden ayrılmaktadırlar. Yine bu ortak adlarla birbirlerinden ayrılan nesneler kendi içlerinde farklı niteliklere sahip olabilmektedirler (soyadı, kullanıcı adı, telefon numarası, sicil numarası, IP Numarası… gibi). Aşağıdaki tabloda LDAP nesnelerine ait olan bazı nitelikler ve bu niteliklerin kodları görülmektedir.

LDAP Niteliği   Nitelik Kodu  Nitelik Açıklaması  Nitelik Örneği 
Organizasyon o Organizasyon adı İstanbul Teknik Üniversitesi
Etki alanı ögesi dc DNS ögesi itu.edu.tr
Organizasyon ünitesi ou Organizasyon ünitesi adı İTÜ Fakülteleri    
Ortak ad cn Oluşturulan girdinin ortak adı  Kullanıcı Adı
Soyad sn Kullanıcı soyadı Kullanıcı Soyadı
Kullanıcı ID uid Sistem giriş kimlik adı  İTÜ Kullanıcı Adı

Aşağıdaki şekilde ise bir ağaç örneği görülmektedir.

 


LDIF (LDAP Data Interchange Format – LDAP Veri Değişim Biçimi) ise LDAP hizmeti veren sunuculara istemcilerin bağlanabilmesini ve nesnelere ait bilgileri görüntüleyebilmesini sağlayan veri değişim formatını tanımlamaktadır. Bir internet standardı olan LDIF ile dizinde tutulan nesneler üzerinde toplu olarak işlemler yapılabilmekte, bu nesnelere ait özellikler değiştirilebilmekte ve nesne özellikleri görüntülenebilmektedir.  Farklı programlama dilleri ile dizinlere erişim sağlanabilmektedir ancak bu programlama dillerinin hepsi temelde LDIF formatını kullanmaktadır. VBScript (Visual Basic Script) dili kullanılarak Aktif Dizin (Active Directory) hizmeti verilen sunucuya bağlanan ve istenilen organizasyon ünitesine dahil olan nesneye ait bilgileri görüntüleyen kod aşağıda görülmektedir.

Kod, not defterinde (notepad) '.vbs' uzantılı olarak kaydedilip çalıştırıldığında ise şu şekilde bir ekran gelmektedir:



Bilgileri görüntülenmek istenilen kullanıcı ismi girildiğinde ise, kullanıcıya ait bilgiler görüntülenmektedir.