Az LDAP felhasználói hitelesítés a felhasználónév és a jelszó kombinációjának hitelesítése egy olyan címtárkiszolgálóval, mint az MS Active Directory, az OpenLDAP vagy az OpenDJ. Az LDAP könyvtárak szabványos technológia a felhasználói, csoport- és jogosultsági információk tárolására és kiszolgálására a vállalati alkalmazások számára.
A felhasználók hitelesítése egy LDAP könyvtárral kétlépcsős folyamat. Ez a cikkmagyarázza a mechanikát, majd azt, hogy hogyan kell konfigurálni azLdapAuth-ban.
1. lépés – A felhasználónév feloldása egy könyvtárbejegyzés attribútumára
A felhasználói bejegyzéseket a könyvtárban egy megkülönböztető név (DN) azonosítja, amely a könyvtár gyökerétől (a jobb szélső szegmenstől) kiinduló útvonalszerű struktúra:
uid=alice,ou=people,dc=wonderland,dc=net
A felhasználó hitelesítéséhez egy LDAP könyvtárral először meg kell szereznie a DN-jét, valamint a jelszavát.
A bejelentkezési űrlapon az emberek általában egy egyszerű azonosítót, például a felhasználónevüket vagy az e-mail címüket adják meg. Nem várja el tőlük, hogy megjegyezzék a könyvtári bejegyzésük DN-jét. Ez nem lenne praktikus.
A probléma megoldására a DN feloldás jön be. Ez veszi a felhasználó nevét vagy e-mail címét, majd keresést futtat az összes felhasználói bejegyzés név- vagy e-mail attribútumai között, hogy megtalálja a megfelelő bejegyzés DN-jét. A könyvtárak rendkívül hatékony indexelést és gyorsítótárazást alkalmaznak, így ezek a keresések általában nagyon gyorsak.
A keresendő könyvtári attribútumok a searchFilterconfigurationparaméterben vannak megadva.Az alapértelmezett LdapAuth konfiguráció az UID és email attribútumokat keresi. A%u helyőrzőt a bejelentkezési űrlapon megadott felhasználói azonosítóval helyettesíti:
ldapAuth.dnResolution.searchFilter = (|(uid=%u)(mail=%u))
Ha csak az UID-re szeretnénk keresni, a keresési szűrő így néz ki:
ldapAuth.dnResolution.searchFilter = (uid=%u)
Ha az UID, az e-mail és az alkalmazotti szám alapján szeretne keresni, akkor a szűrőt bővítse ki
ldapAuth.dnResolution.searchFilter = (|(uid=%u)(mail=%u)(employeeNumber=%u))
Két fontos dologra kell figyelni a DNfeloldás konfigurálásakor és a könyvtárban új felhasználónevek létrehozásakor:
-
Az attribútumoknak – felhasználónév, e-mail, stb -, amelyekkel a felhasználók bejelentkeznek, egyedinek kell lenniük. Ha két olyan bejegyzést találunk, amelyek azonos azonosító attribútummal rendelkeznek,pl. email, a hitelesítést azonnal megtagadjuk.
-
Győződjön meg arról, hogy minden felhasználó, akitől bejelentkezést várnak, rendelkezik egy meghatározott azonosító attribútummal. Például, ha a felhasználók az e-mail címükkel fognak bejelentkezni, győződjön meg róla, hogy minden fiók rendelkezik meghatározott e-mail attribútummal.Ellenkező esetben a hitelesítés sikertelen lesz.
Az LdapAuth webes API nem mutatja a hitelesítési válaszban a bejelentkezés sikertelenségének okát – hogy az egy rossz felhasználónév, egy rossz jelszó vagy mindkettő volt. Az olyan helyzetek hibaelhárításához, amikor egy felhasználó a helyes felhasználónév és jelszó megadása ellenére sem tud bejelentkezni, ellenőrizze a szolgáltatás naplóit.
Ha a bejelentkezést rossz felhasználónév miatt utasították el, egy ilyen sor jelenik meg a naplóban:
2012-10-01 10:52:51,460 INFO – user.auth: username=tom authenticated=false message=Invalid username
Ha a felhasználónév helyesen lett feloldva, de a jelszó rossz volt:
2012-10-01 10:55:05,662 INFO – user.auth: username=alice DN=uid=alice,ou=people,dc=wonderland,dc=net authenticated=false message=Invalid password
Ha helyesen oldottuk fel a felhasználó könyvtárbejegyzésének DN-jét, akkor folytathatjuk a következő lépéssel – a jelszó ellenőrzésével.
2. lépés – A felhasználói jelszó ellenőrzése
A jelszavakat a bind nevű LDAP parancs ellenőrzi. Kapcsolatot nyitunk a címtárkiszolgálóval, majd egy kérést küldünk a kapcsolat hitelesítésére egy adott felhasználóként a bejegyzés DN-jének és jelszavának átadásával:
DN: uid=alice,ou=people,dc=wonderland,dc=netpassword: secret
Ha a hitelesítő adatok helyesek, a címtárkiszolgáló sikert küld vissza. Ellenkező esetben egy LDAP-hibát Invalid credentials
(49-es kód) ad vissza.
Fontos dolgokat kell itt megjegyezni:
-
A jelszó ellenőrzése a felhasználó bejegyzésében található, erre a célra szolgáló attribútummal történik. Ha szabványos könyvtársémát használsz, ezt az attribútumot
userPassword
-nek hívják. Az MS Active Directoryban ennek az attribútumnak a neveunicodePwd
. Győződjön meg arról, hogy minden felhasználó, akitől bejelentkezést várnak, rendelkezik egy meghatározott jelszóattribútummal. Ellenkező esetben a hitelesítés sikertelen lesz. -
A jelszóértékek gyakran hasheltek, és további védelmet kaphatnak, például írásvédetté téve őket. Ezért egy egyszerű LDAP olvasás és összehasonlítás itt általában nem fog működni. A bind parancs mindig az előnyben részesített módszer.
-
A jelszavak jellemzően nagy- és kisbetű érzékenyek.
Még egyszer ne feledje, hogy a naplófájlok a barátja. Ezek minden bejelentkezési kísérlet részleteit rögzítik, és gyors hibaelhárításra használhatók, ha a hitelesítés nem a várt módon működik. Ha további segítségre van szüksége az LdapAuth beállításával kapcsolatban, lépjen kapcsolatba velünk.