Uitleg over LDAP-authenticatie van gebruikers | Connect2id

LDAP-authenticatie van gebruikers is het proces waarbij een combinatie van gebruikersnaam en wachtwoord wordt gevalideerd met een directoryserver zoals MS Active Directory, OpenLDAP of OpenDJ. LDAP-directories zijn standaardtechnologie voor het opslaan van informatie over gebruikers, groepen en rechten en het aanbieden daarvan aan toepassingen in de onderneming.

Het verifiëren van gebruikers met een LDAP-directory verloopt in twee stappen. In dit artikel wordt uitgelegd hoe dit in zijn werk gaat en hoe het inLdapAuth moet worden geconfigureerd.

Stap 1 – Het omzetten van de gebruikersnaam naar een attribuut van een directory entry

Gebruikers entries in een directory worden geïdentificeerd door een distinguished name (DN) die lijkt op een pad-achtige structuur te beginnen bij de directory root (het meest rechtse segment):

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

Om een gebruiker te authenticeren met een LDAP directory moet je eerst hun DN en wachtwoord verkrijgen.

Bij een inlogformulier voeren mensen meestal een eenvoudige identificatiecode in, zoals hun gebruikersnaam of e-mailadres. Je verwacht niet dat ze de DN van hun directory-entry onthouden. Dat zou onpraktisch zijn.

Om dit probleem op te lossen komt er een DN resolutie. Het neemt de naam of e-mail van de gebruiker, en zoekt dan in de naam of e-mail attributen van alle gebruikersdirectories naar de DN van de overeenkomende entry. Directories maken gebruik van zeer efficiënte indexering en caching, dus deze zoekopdrachten zijn meestal erg snel.

De directory attributen om naar te zoeken worden gedefinieerd in de searchFilterconfigurationparameter.De standaard LdapAuth configuratie zoekt naar de UID en email attributen. De plaatshouder%u wordt vervangen door de gebruikers-identificatie die in het loginformulier is ingevuld:

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

Als u alleen op UID wilt zoeken, zou het zoekfilter er als volgt uitzien:

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

Als u wilt zoeken op UID, e-mail en personeelsnummer, breidt u het filter uit tot

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

Twee belangrijke dingen die u in acht moet nemen bij het configureren van DN-resolutie en het aanmaken van nieuwe userentries in de directory:

  • De attributen – gebruikersnaam, e-mail, enzovoort – waarmee gebruikers inloggen moeten uniek zijn. Als blijkt dat twee gebruikers hetzelfde kenmerk hebben, bijvoorbeeld e-mail, wordt verificatie onmiddellijk geweigerd.

  • Zorg ervoor dat elke gebruiker die zich moet aanmelden, een eigen kenmerk heeft voor het kenmerk waarmee hij zich moet identificeren. Als gebruikers bijvoorbeeld moeten inloggen met hun e-mailadres, zorg er dan voor dat alle accounts een gedefinieerd e-mailkenmerk hebben. Anders zal de authenticatie mislukken.

De LdapAuth-web-API geeft in de authenticatie-respons niet de oorzaak van het mislukken van het inloggen aan – of dat nu een verkeerde gebruikersnaam, een verkeerd wachtwoord of beide waren. Om situaties op te lossen waarbij een gebruiker niet kan inloggen ondanks het invoeren van een correcte gebruikersnaam en wachtwoord, controleer dan de service logs.

Als een login werd geweigerd vanwege een slechte gebruikersnaam, zal een regel als deze in het logboek verschijnen:

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

Als de gebruikersnaam correct was opgelost, maar het wachtwoord was slecht:

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

Als we de directory entry DN van de gebruiker correct hebben opgelost, kunnen we doorgaan naar de volgende stap – het controleren van het wachtwoord.

Stap 2 – Valideren van het gebruikerswachtwoord

Wachtwoorden worden gecontroleerd door een LDAP commando genaamd bind. Er wordt een verbinding met de directoryserver tot stand gebracht, waarna een verzoek wordt verzonden om de verbinding als een bepaalde gebruiker te authenticeren door de DN van de vermelding en het wachtwoord door te geven:

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

Als de referenties correct zijn, retourneert de directoryserver een succes. Anders wordt een LDAP-fout Invalid credentials (code 49) geretourneerd.

Belangrijke zaken om hier op te merken:

  • Het wachtwoord wordt gecontroleerd aan de hand van een attribuut in de invoer van de gebruiker dat voor dat doel is bestemd. Als u een standaard directoryschema gebruikt, heet dit attribuut userPassword. In MS Active Directory is de naam van dit attribuut unicodePwd. Zorg ervoor dat iedere gebruiker die wordt verwacht in te loggen een gedefinieerd wachtwoordattribuut heeft. Anders zal de authenticatie mislukken.

  • De wachtwoordwaarden zijn vaak gehasht en kunnen extra zijn beveiligd, bijvoorbeeld door ze alleen voor schrijven geschikt te maken. Daarom zal een eenvoudige LDAP-lezing en -vergelijking hier meestal niet werken. De bind-opdracht verdient altijd de voorkeur.

  • Wachtwoorden zijn meestal hoofdlettergevoelig.

Houd ook hier in gedachten dat logbestanden uw vriend zijn. Ze bevatten de details van elke inlogpoging en kunnen worden gebruikt om snel problemen op te lossen als de authenticatie niet werkt zoals verwacht. Als u meer hulp nodig heeft bij het configureren van LdapAuth neem dan contact met ons op.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.