LDAP nedir?

Türkçesi ile Hafifletilmiş Dizin Erişim Protokolü olan LDAP nedir, kısaca bildiklerimi not etmek istiyorum.

DAP (Directory Acces Protocol) Türkçe ifade edecek olursak Dizin Erişim Protokolü sadece OSI referans modelini kullanıyor, LDAP protokolü ise TCP/IP protokolünü kullanabiliyor bu fark LDAP protokolünün varoluş sebebidir diyebilirim.

LDAP protokolü dağıtılmış dizin bilgi servisini yönetmen ve bunlara erişmek için bir Ip ağı üzerinden bir uygulama protokolü kullanıcısıdır.

Bir dizin hizmetinin birincil amacı, genellikle bir hiyerarşik yapıda düzenlenen sistematik bir kayıt kümesi sağlamaktır. İletişim numarası ve adresi ile abonelerin listesini içeren bir telefon rehberine benzer.

Bir LDAP oturumu başlatmak için, bir istemci varsayılan olarak TCP bağlantı noktası 389’u kullanmak üzere ayarlanan Dizin Sistem Aracısı olarak bilinen sunucuya bağlanmalıdır.

Bağlantı kurulduktan sonra, istemci ve sunucu veri paketini değiştirir. Temel kodlama kuralları, sunucu ve istemci arasında bilgi aktarımı için kullanılır.

LDAP yapısı nispeten karmaşık görünmesine rağmen, anlaşılması oldukça kolaydır. Temel yapı aşağıdaki gibidir; herhangi bir girişte bir dizi özellik bulunur. Her özellik bir veya daha fazla değer barındırır ve bir adı vardır. Dizindeki her giriş, ilgili Ayırt Edici Addan (Distinguished Name) oluşan benzersiz bir kimlik belirleyicisine atanır.

Sunucu bir alt ağacı tutma yeteneğine sahiptir ve çocuklar, belirli bir girişten başlayarak, ayrıca kısa referanslar da olabilir.

Bu, dizin-sunucu veritabanına yeni bir giriş eklemek için kullanılır.

LDAP sunucusuyla bağlantıda, oturumun varsayılan kimlik doğrulama durumu anonimdir. Temel olarak iki tür LDAP kimlik doğrulama yöntemi vardır – basit kimlik doğrulama yöntemi ve SASL kimlik doğrulama yöntemi.

LDAP ile ilgili not ettiklerim arasında “write once, read/query many times” yani bir kez yaz birçok kez oku yada sorgulama yap cümlesi önemli. Çünkü LDAP protokolü büyük ölçekli bir veri setinde hızlı bir okuma ve sorgulama performansı sağlar fakat ekleme silme güncelleme gibi işlemler buna nazaran daha yavaştır sebebi ise tasarımının bu şekilde olması.

X.500 tabanlı dizin hizmetlerine erişmek için LDAP protokolü kullanılır. LDAP, TCP / UP veya diğer bağlantlı yönelimi aktarım hizmetleri üzerinden çalışabilir.

İnternet üzerinde konu ile ilgili araştırma yaparken ilk gözüme çarpan açıklamalardan birisi de büyük sayılarda kayıt kullanıcısı olan bir web sitesi düşünün LDAP protokolü olmadan kullanıcıları doğrulamak istediğinizde veritabanı ile etkileşim gerekli olacak ve veritabanı sistemin darboğazı haline gelecek fakat LDAP kullanımı ile kullanıcı doğrulama işlemi çok daha performanslı bir şekilde gerçekleştirilebilir, bu bağlamda veritabanı dışarısında bir optimizasyon katmanı olarak LDAP kullanımından bahsediliyor ve açıkcası bu benim için iyi bir örnek.

Kısaca LDAP; kullanıcı dizinlerini sorgulamak için kullanılan bir protokoldür ve Active Directory yada Novell eDirectory LDAP’ı desteklemektedir. SQL sorguları gibi LDAP sorguları yapmak da mümkündür.

LDAP protokolü Windows işletim sistemlerinde Active Directory hizmeti olarak bulunmaktadır. Active Directory kullanıcı tanımlama, kullanıcı grup tanımlama, kullanıcı bilgilerin erişme vebenzeri işlemlerini yaparken aslında arka planda LDAP protokolü çalışmaktadır.

Active Directory bir veritabanıdır ve dizin hizmeti vermektedir. Kullanıcıları, cihazları, bilgisayarları kısacası kullanıldığı organizasyon kapsamında yer alan tüm bilgileri saklayabilir, çeşitli kısıtlamalar oluşturabilir yada gruplandırabilir diyebiliriz.

GNU/Linux dağıtımlarında ise OpenLDAP uygulaması ile LDAP protokolü kullanılmaktadır.

LDAP verileri nesne tabanlı bir yapıya sahiptir ve her nesne bir attribute ve valueden oluşur kısacası nesneyi tanımlayan attribute(özellik) ve value(değer)’dir. LDAP sunucusunda depolanan her nesneyi betimleyen sadece tek bir DN(distinguished name) vardır.

Nesneler bir araya gelerek tree(ağaç) denilen yapıyı meydana getirirler ve bu ağaç yapısı bir root (kök) dizine bağlıdır. Temel dizin tahmin edebileceğiniz gibi kök dizindir ve organizasyonu da kapsar. Dizin hizmeti sağlamakta olan bir sunucusun distinguished name yani belirleyici ismi Domain Component yani etki alanı öğelerince belirlenir.  DC den sonra gelen yapı ise Organizational Unit yani organizasyon üniteleridir. Organizasyon ünitelerinin nesneleri Common Name

ile birbirinden ayrılırlar ve nesneler kendi aralarında farklı özelliklere sahip olabilirler. Burada konuyu biraz karmaşık bir şekilde not ettiğimin farkındayım.Şimdi kısaca LDAP nesnelerinin attribute kodlarını ve açıklamalarını ele alalım;

LDAP özelliği Özellik kodu Özellik açıklaması Örnek
Organizasyon o Organizasyon ismi Celal Bayar Üniversitesi
Domain Component dc Domain Component elemanı mcbu.edu.tr
Organizational Unit ou Organizasyon Ünitesi ismi MCBU Fakülteleri
Common Name cn Entryinin ortak adı Kullanıcı Adı
Kullanıcı ID uid Kullanıcı kimlik adı MCBÜ Kullanıcı adı

Yukarıdaki tablo ile örnekleme yapmış olduk burada tahayyül etmek gerekirse; Celal Bayar Üniversitesi içerisinde kullanıcı girişlerinin nasıl olabileceğini örneklemiş olduk.