Az LDAP integráció arra való, hogy LDAP adatbázisokból authentikáljuk a felhasználót. Mit jelent ez? Például Windows Active Directory-t, OpenLDAP szervert, vagy Novell NDS-t.
Egy website-on egy Active Directory-val való integrálása eléggé sokáig tartott nekem, ezért leírom a modul tulajdonságait és használatbavételét.
A tulajdonságai
Ha nem létezik a Drupal adatbázisban a megadott nevű user, akkor a megadott LDAP szerverről authentikálja, és felveszi a Drupal userek közé az authentikált usert.
Van lehetőség arra is, hogy a Drupal és az LDAP szerver usereit szinkronban tartsa, azaz a név, email cím és jelszó adatokat oda-vissza frissítse. Persze a jelszó frissítése biztonsági kérdéseket vet fel!.
Sajnos csak nyílt módon tudja a kommunikációt lebonyolítani a Drupal és a szerver egymással, ezért a csomagokat nem szabad kiengedni a Netre.
Van lehetőség a csak LDAP alapú beléptetésre is.
A Drupal site 1-es számú (admin) userét nem authentikálja az LDAP szerverrel!
Beállítása
A PHP-ban be kell kapcsolni az ldap támogatást.
Meg kell győződni arról, hogy az LDAP be van-e állítva a PHP-ban. Ezt az alábbi egysoros kóddal lehet leellenőrizni:
<?php phpinfo(); ?>
Ha az eredményül kapott HTML kódban van LDAP rész, akkor telepítve van. Ha nincs, akkor a PHP.ini extensions beállításai között engedélyezni kell a php_ldap extensiont.
le kell tölteni a http://drupal.org/project/ldap_integration helyről a modult és betenni a modul könyvtárba, majd engedélyezni.
A továbbiakban létre kell hozni az LDAP szerverrel a kapcsolatot, ami abból áll, hogy
Server Settings
Adminisztráció/Modulok/LDAP auth/ LDAP Integration útvonalon megnyitjuk a beállító oldalt. Ha nincsen még LDAP kapcsolat, akkor létre kell hozni egy újat, ha pedig már létezik, akkor kilistázza a létezőket és abból lehet választani.
A System Wide Options beállítással meg lehet adni,
csak LDAP authentikáció vagy
Drupal adatbázis alapú, néha az nem működik, akkor LDAP
Egy LDAP szerver konfigurálásakor az alábbiakat kell megadni:
Név: ez lesz a kapcsolat neve pl. Céges AD kapcsolat
LDAP Server: www.cegnev.local
(Általában nem célszerű egy AD-t kitenni az internetre, ezért adok ilyen evet, de ha van "igazi" domain név azt is meg lehet adni, vagy IP címet is.)
Port: 389, ha nincs titkosítás, AD esetén 636 kell, ha van titkosítás.
Use Start-TLS: Bekapcsolni, ha akarunk titkosítást (Sajnos a titkosítással nem ment, tehát ne kapcsoljuk be!)
Store Password in encrypted form: Ha a user jelszavát a Drupal adatbázisban akarjuk tárolni. MD5-tel titkosítva tárolja az adatbázisban a Drupal, hasonlóan az LDAP szerverekhez.
Login procedure
Base DNs: cn=Users, dc=www, dc=cegnev, dc=local - Tipikus beállítás egy AD esetén
Több AD konténert is megadhatunk, soronként egyet, ekkor végignézi az authetnikáción az összeset a modul.UserName attiribute: SAMAccountName - Ez a windows SAM-ben tárolt userazonosító név
Email attribute: mail - ha akarunk emailt is tárolni a userről
Advanced configuration
Az Active Directory általában nem engedélyezi az anonymous usereknek, hogy lekérdezzenek azonosító adatokat, ezért célszerűen létre kell hoznunk egy olyan usert az AD-ben, akinek elég joga van az adatok lekérésére, de nincsen joga semmi egyébre! A megadás módja az LDAP-nál szokásos. Példánkban ez a drupalauth a Users konténerből.
DN for non-anonymous search: cn=drupalauth, cn=Users, dc=www, dc=cegnec, dc=localclear current password - Ennek a checkboxnak a beállítása
Az oldal végén Save Configuration, majd még egyszer meg kell nyitni a beállító ablakot, mert ekkor megjelenik az Advanced configurationban még egy sor:
Password: Ide kell beírni a korábban megadott drupalauth jelszabát, amit az AD-ben is korábban beállítottunk!
Ha a fentiekkel megvagyunk, ki lehet próbálni a cuccot. Javasolt, hogy az AD szerver és a Drupal vagy egy szerveren legyen (WAMP szerver pl.), vagy az AD szerver és a Drupal kiszolgáló egy intranet hálózatban legyen, mivel a csomagok utazgatnak a hálózaton és a user azonosítókat el lehet kapni TCP/IP dump programmal.