LDAP Hakkında

LDAP (Lightweight Directory Access Protocol - Hafifletilmiş Dizin Erişim Prtokolü) Michigan Üniversitesi tarafından geliştirilen, LAN hizmetlerinin yerellestirilmesi icin ortaya cikmis, diğer programlardan gelen veri isteklerine cevap veren bir dizin sunucu protokolüdür. İlk olarak X.500 Dizin Erişim Protokolünün (DAP) ön ucu (front-end) olacak şekilde kullanılmıştır fakat tek başına da çalışabilmektedir. X.500 dizinlerinin gerektirdigi 7 katmanli OSI katmani yerine hafiflestilmis (lightweight) olan 4 katmanli TCP/IP kullanilmistir. LDAP özgün bir veritabanı yönetim sistemidir. Normal veritabanı yönetim sistemlerinden farklı olarak okuma işlemi için özelleştirilmiştir.Okuma işlemi LDAP'da yazma işleminden çok daha fazla kullanılmaktadır.

LDAP'da dizinler dosya sisteminde, NIS'de veya DNS'de olduğu gibi sıradüzensel (hiyerarşik) yapıda bulunur. Bütün dizinlerin bağlı olduğu bir kök dizin bulunur ve her dizinin kendi alt dizinleri bulunabilir. Bu şekliyle veriler çok bilinen ağaç yapısında tutulur.

Ldap girdileri (düğüm, veri, kayıt, dizin de denir) bağlı oldukları düğümlerle birlikte biriciktir (unique). Nasıl ki dosya sisteminde aynı isimli dosya birden fazla yerde olabilirken aynı tam yola sahip tek bir dosya olabiliyorsa LDAP'da da aynı DN (Distinguished Name) e sahip tek bir kayıt olabilir. Yukarıdaki ağaç yapısında mete kullanıcısının DN'si şöyle yazılır: dn: uid=mete, ou=people, cd=comu,cd=edu,cd=tr

DN LDAP girdisinin ismidir, onun herhangi bir parçası veya özniteliği (attribute) değildir. Yukarıdaki örnekte uid=mete girdinin RDN'sidir (Relative Distinguished Names), dn: ou=people, dc=comu,dc=edu,dc=tr ise üst düğümünün DN'sidir (burada dc, Domain Component, Alan Adı Elemanı kısaltmasıdır). Başka bir deyişle bir DN seri RDN'lerden oluşmuştur. Diğer satırlar girdinin öznitelik değerleridir.

Şema (Schema)

Bir LDAP girdisinin içeriği Şema tarafından düzenlenir. Şema, girdinin içerebileceği öznitelik türlerini (attribute type) tanımlar. Bir öznitelik tanımı sözdizimi (syntax) ve değerlerden oluşur. Örneğin "mail" özniteliği "user@example.com" şeklinde bir değeri içerebilir. Öznitelik tanımı ayrıca verinin tek değerli mi, çok değerli mi olacağı, arama/karşılaştırma işlemlerinde nasıl davranacağı (küçük/büyük harf duyarlı mı, vs.) gibi bilgileri de belirtir.

Şema nesne sınıflarını (object class) tanımlar. Her girdinin, şemada tanımlı sınıf ismini içeren bir özniteliği vardır. Bir girdinin ait olduğu (veya içerdiği) sınıfların şema tanımlaması girdinin ne tür bir veriyi temsil edebileceğini tanımlar. Örn: person, organization veya domain. Nesne sınıfında ayrıca hangi alanların seçimlik, hangilerinin zorunlu olduğu da tanımlanır. Örneğin bir kişiyi temsil eden girdi "top" ve "person" sınıflarına ait olabilir. "person" sınıfına ait bir girdinin "sn" ve "cn" öznitelikleri girilmelidir, ayrıca "userPassword" veya "telephonenumber" öznitelikleri de seçimlik olarak kullanılabilir. Bir girdi birden fazla sınıfa ait olabilir. Nesne sınıfları da kalıtım yoluyla türetilip yeni sınıflar elde edilebilir.

LDAP Protokolü İşlemleri

Bir istemci LDAP oturumunu sunucuya bir istekte bulunarak başlatır (varsayılan olarak TCP port 389 üzerinden). İstemci sunucuya bir işlem isteği gönderir ve sunucu da bunu yanıtlar.İstisnalar dışında istemci sonraki istek için beklemek zorunda değildir ve sunucu da yanıtları herhangi bir sırada gönderebilir.

LDAP protokol işlemleri şunlardan oluşur:

  • Bind - authenticate (bağlanma - kimlik kanıtlama)
  • Güvenli bağlantı için TLS başlatma (LDAPv3 kullanarak)
  • Arama
  • Karşılaştırma
  • Ekleme
  • Silme
  • Değiştirme
  • DN değiştirme - taşıma veya yeniden isimlendirme
  • Unbind - Oturum sonlandırma

LDAP Uygulamaları

LDAP hizmetini kullanmanın bir sebebi oldukça geniş bir desteği olmasıdır. Kimlik kanıtlama gerektiren uygulamalardan web uygulamalarına kadar pek çok yerde kullanılabilir. Bir diğer sebebi de temel güvenlik özelliklerini içermesi ve pek çok uygulamayı desteklemesidir. Bir çok uygulamada LDAP kullanılmasıyla sistem yöneticisi farklı uygulamalarla tek tek ilgilenmek yerine sadece bir yere odaklanarak işlerini yürütebilir.

Çok bilinen örneklerden biri kullanıcı/grup bilgilerinin tutulması, bir diğeri de adres defteri uygulamalarıdır.

Kaynaklar: