Vysvětlení ověřování uživatelů LDAP | Connect2id

Ověřování uživatelů LDAP je proces ověřování kombinace uživatelského jména a hesla s adresářovým serverem, například MS Active Directory, OpenLDAP neboOpenDJ. Adresáře LDAP jsou standardnítechnologií pro ukládání informací o uživatelích, skupinách a oprávněních a jejich poskytování aplikacím v podniku.

Ověřování uživatelů pomocí adresáře LDAP je dvoustupňový proces. Tento článekvysvětluje jeho mechaniku a poté jak jej nakonfigurovat vLdapAuth.

Krok 1 – Převedení uživatelského jména na atribut položky adresáře

Záznamy uživatelů v adresáři jsou identifikovány rozlišujícím jménem (DN), kterépřipomíná strukturu podobnou cestě začínající u kořene adresáře (nejpravějšísegment):

uid=alice,ou=people,dc=wonderland,dc=net

Pro ověření uživatele pomocí adresáře LDAP je nejprve třeba získatjeho DN a také heslo.

Při použití přihlašovacího formuláře lidé obvykle zadávají jednoduchý identifikátor, jako je jejichjméno nebo e-mailová adresa. Neočekáváte, že si budou pamatovat DN svého záznamu v adresáři. To by bylo nepraktické.

Pro řešení tohoto problému přichází na řadu řešení DN. Vezme jméno uživatele nebo e-mail a pak provede vyhledávání podle atributů jména nebo e-mailu všech uživatelských záznamů, aby našel odpovídající DN položky. Adresáře používají vysoce efektivní indexování a ukládání do mezipaměti, takže tato vyhledávání jsou obvykle velmi rychlá.

Atributy adresáře, které se mají vyhledávat, jsou definovány v parametru searchFilterconfiguration.

Výchozí konfigurace LdapAuth prohledává atributy UID a e-mail. Zástupný znak%u je nahrazen identifikátorem uživatele zadaným v přihlašovacím formuláři:

ldapAuth.dnResolution.searchFilter = (|(uid=%u)(mail=%u))

Pokud chcete vyhledávat pouze UID, vyhledávací filtr by vypadal takto:

ldapAuth.dnResolution.searchFilter = (uid=%u)

Pokud chcete vyhledávat UID, e-mail a číslo zaměstnance, rozšiřte filtr na

ldapAuth.dnResolution.searchFilter = (|(uid=%u)(mail=%u)(employeeNumber=%u))

Dvě důležité věci, které je třeba dodržet při konfiguraci řešení DN a vytváření nových uživatelských záznamů v adresáři:

  • Atributy – uživatelské jméno, e-mail atd. – kterými se uživatelé přihlašují, musí býtjedinečné. Pokud se zjistí, že dva záznamy mají stejný identifikační atribut,např. e-mail, bude autentizace okamžitě zamítnuta.

  • Ujistěte se, že každý uživatel, který se má přihlásit, má definovaný atribut pro identifikační atribut. Pokud se například uživatelé budou přihlašovat pomocí své e-mailové adresy, ujistěte se, že všechny účty mají definovaný atribut e-mail. jinak autentizace selže.

Ve webovém rozhraní API LdapAuth není v odpovědi na autentizaci odhalena příčina selhání přihlášení – zda to bylo špatné uživatelské jméno, špatné heslo nebo obojí. Chcete-li vyřešit situaci, kdy se uživatel nemůže přihlásitnavzdory zadání správného uživatelského jména a hesla, zkontrolujte protokoly služby.

Pokud bylo přihlášení odmítnuto z důvodu špatného uživatelského jména, objeví se v protokolu tento řádek:

2012-10-01 10:52:51,460 INFO – user.auth: username=tom authenticated=false message=Invalid username

Pokud bylo uživatelské jméno správně vyřešeno, ale heslo bylo špatné:

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

Pokud jsme správně vyřešili položku DN adresáře uživatele, můžeme přistoupit k dalšímu kroku – kontrole hesla.

Krok 2 – ověření hesla uživatele

Hesla se kontrolují příkazem LDAP zvaným bind. Je otevřeno spojení s adresářovým serverem a poté je odeslán požadavek na ověření spojení jako konkrétního uživatele předáním jeho vstupního DN a hesla:

DN: uid=alice,ou=people,dc=wonderland,dc=netpassword: secret

Jsou-li pověření správná, adresářový server vrátí úspěch. V opačném případě vrátí chybu LDAP Invalid credentials (kód 49).

Důležité je zde poznamenat:

  • Heslo je kontrolováno proti atributu v položce uživatele určenémupro tento účel. Pokud používáte standardní adresářové schéma, nazývá se tento atribut userPassword. V MS Active Directory je název tohoto atributu unicodePwd. Ujistěte se, že každý uživatel, který se má přihlásit, má definovaný atribut hesla. Jinak autentizace selže.

  • Hodnoty hesla jsou často zaheslované a mohou být dodatečně chráněny, např. tím, že jsou určeny pouze pro zápis. Proto zde prosté čtení a porovnání LDAP zpravidla nebude fungovat. Příkaz bind je vždy preferovanou metodou.

  • Hesla jsou obvykle citlivá na velikost písmen.

Znovu připomínáme, že soubory protokolů jsou vaším přítelem. Zaznamenávají podrobnosti o každém pokusu o přihlášení a lze je použít k rychlému řešení problémů, když ověřování nefunguje podle očekávání. Pokud potřebujete další pomoc s konfigurací LdapAuth, obraťte se na nás.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.