Bir LDAP Macerası

LDAP son iki senedir haşır neşir olduğum bir protokol. Genelde e-posta hesaplarını (dovecot ve postfix ikilisini seviyorum) ve DNS kayıtlarını tutmak için kullanırdım (PowerDNS şiddetle tavsiye olunur); ancak son bir aydır bunun kapsamını genişlettim. Neler yaptığıma gelince:

-Collaboration suite ile kullanmaya başladım. Zarafa ve zimbra açık kaynak çözümler olduğu için ilk olarak onları denedim.

Sistem kaynağı tüketimi bakımından Zarafa tercih sebebim oldu. Zira zimbra oldukça fazla kaynağa ihtiyaç duyuyor.

Zarafa’nın LDAP yapılandırmasına gelirsek, oldukça kolay bir yapılandırması var. Kurulum yaptıktan sonra paket içinden çıkan ldap.cfg dosyasında DN’leri LDAP ağacına uyarladıktan sonra “zarafa-admin -s” demem yetti, kullanıcıları otomatik kendi veritabanına aktardı. (değişiklik yapıldığında da yansıyor otomatik)

– Doküman yönetim sistemi olarak OpenKM ve Alfresco’yu (Community Edition — Topluluk Sürümü) denedim.

Kullanım kolaylığı ve eklentileri nedeniyle OpenKM her zaman öncelikli tercihim oluyordu. Ancak LDAP yapılandırma konusunda maalesef durum o kadar kolay değil. Bunda biraz da OpenKM dokümantasyonunun ücrete tabi olması da önemli rol oynuyor. Şu ana kadar kimlik doğrulamanın ötesine geçemedim maalesef OpenKM ile. Çözdüğüm anda bununla ilgili bir günlük yazısı yazmak farz oldu :)

Alfresco da OpenKM kadar esnek ve kullanışlı bir doküman yönetim sistemi. Alfresco ile OpenKM’den önce tanışmış olsaydım muhtemelen OpenKM kullanmıyor olurdum şimdi :) . Oldukça kapsamlı ve güzel bir dokümantasyonu var. Ayrıca LDAP yapılandırması oldukça basit. Bu yüzden kullanmanızı tavsiye edebilirim. Tek dezavantajı son kullanıcıya sunduğu görsel arabirimin OpenKM’ye kıyasla zayıf olması. (ah şu son kullanıcılar)

– Proje yönetimi için şimdiye kadar hep Trac’i savunurdum, kullanırdım, kullanmaya zorlardım.

Ancak Redmine ile tanıştıktan sonra Trac gördüğüm yerden kaçıyorum artık. Redmine proje yönetimi konusunda çok spesifik istekleriniz yoksa işinizi fazlasıyla görecek bir uygulama.

LDAP yapılandırması ise oldukça basit. Doğrudan desteği olduğu için Redmine ayarlarında bir kaç parametreyi değiştirdikten sonra kullanıcıları LDAP’tan almasını sağlamak 1 dakikadan daha az sürdü ;) .

Trac’ta ise bunun için eklentiye ihtiyacınız olduğunu ek bilgi olarak not düşeyim.

– İçerik yönetim sistemi için bu konuda artık kendisini fazlasıyla kanıtlamış 2 farklı içerik yönetim sistemi (Drupal ve WordPress) ile LDAP doğrulama yapmayı denedim.

WordPress için çeşitli eklentiler denedim, bunlar içerisinde en basit ve en hızlı yapılandırılabilir eklentinin “LDAP LPRM” olduğuna karar verdim. Oldukça esnek ve oldukça basit bir yapı sunuyor; dolayısıyla yapılandırma işi bir kaç dakikayı geçmeyecektir.

Drupal’in LDAP modülüne ise tabiri caizse aşık oldum. Öyle özelleştirilebilir seçenekler sunuyor ki keşke her LDAP desteği olan uygulama bunun kadar esnek çözümler sunabilse diyorsunuz :) . Drupal 6 için ldap_integration, Drupal 7 için ldap modülü aynı işi yapıyor ve arabirim olarak aynı arabirimi sunuyorlar. İzin gruplarına kadar her şeye müdahale etmeniz mümkün kılıyorlar. İlk defa kullanan birinin 10 dakika içerisinde ayağa kaldırabileceği kolaylıkta olması da ayrı bir güzelliği.

Bu arada Apache ile daha spesifik LDAP yönetimi için mod_authz_ldap modülünü sıkça kullanıyorum ve bir sonraki yazımda Apache ve LDAP konusuna ayrıca değinmeyi planlıyorum.

Bu arada her şeyi web’den yapıyorken LDAP ağacını da webden yönetmenin mümkün olduğunu hatırlatmak isterim. phpLDAPadmin ile oldukça rahat bir biçimde LDAP ağacını yönetebiliyorum. Tabii standart desteklenen (phpLDAPadmin’in desteklemesi gerekiyor) şema kullanmıyorsanız şablonlara biraz müdahale etmeniz gerekebiliyor.

Unutmadan ekleyeyim, spam/antivirus gateway olarak amavisd-new’i beraberinde gelen şema ile kullanmak oldukça keyifli oluyor ve her kullanıcının spam, virus vb. skorlarını ayrı ayrı tanımlayabilmek oldukça rahatlık sağlıyor. Şemanızı OpenLDAP’a tanıttıktan sonra amavisd’nin yapılandırma dosyasına şunları eklemeniz yeterli (zarafa için örnek):

$enable_ldap = 1; # 0 = devredışı, 1 = etkin

$default_ldap = {
hostname => 'ldap.domain.com', # ldap hostname
timeout => 5,
tls => 1, # 0 = false, 1 = true
base => 'cn=people,dc=domain,dc=com', # dizin
query_filter =>
'(&(objectClass=amavisAccount)(|(mail=%m)(zarafaAliases=%m)))'
};

Bunlara ek olarak diğer açık kaynak/özgür yazılımlarla ilgili deneyimlerinizi paylaşırsanız bu listeyi daha da genişletebilirim :)