LDAP-användarautentisering förklarad | Connect2id

LDAP-användarautentisering är processen att validera en kombination av användarnamn och lösenord med en katalogserver som MS Active Directory, OpenLDAP eller OpenDJ. LDAP-kataloger är standardteknik för att lagra information om användare, grupper och behörigheter och för att ge den till tillämpningar i företaget.

Autentisering av användare med en LDAP-katalog är en process i två steg. I den här artikeln förklaras hur det går till och sedan hur man konfigurerar det iLdapAuth.

Steg 1 – Resolvering av användarnamnet till ett attribut för en katalogpost

Användarposter i en katalog identifieras av ett distinkt namn (DN) som liknar en stigliknande struktur som börjar vid katalogroten (det högra segmentet):

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

För att autentisera en användare med en LDAP-katalog måste du först få tag på hans eller hennes DN och lösenord.

Med ett inloggningsformulär anger man vanligtvis en enkel identifierare, t.ex. sitt användarnamn eller sin e-postadress. Du förväntar dig inte att de ska komma ihåg DN för sin katalogpost. Det skulle vara opraktiskt.

För att lösa detta problem kommer en DN-upplösning in. Den tar användarens namn eller e-postadress och gör sedan en sökning mot namn- eller e-postattributen för alla användarentréer för att hitta den matchande DN-adressen för posten. Kataloger använder sig av mycket effektiv indexering och cachelagring, så dessa sökningar är vanligtvis mycket snabba.

De katalogattribut som ska sökas efter definieras i parametern searchFilterconfiguration.SearchFilterconfiguration.Standardkonfigurationen för LdapAuth söker i UID- och e-postattributen. Platshållaren%u ersätts med den användaridentifierare som anges i inloggningsformuläret:

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

Om du bara vill söka efter UID skulle sökfiltret se ut så här:

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

Om du vill söka efter UID, e-post och anställningsnummer utökar du filtret till

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

Två viktiga saker att observera när du konfigurerar DNresolution och skapar nya användartjänster i katalogen:

  • Attributen – användarnamn, e-post osv – som användarna loggar in med måste vara unika. Om två poster upptäcks ha samma identifierande attribut, t.ex. e-post, kommer autentiseringen omedelbart att nekas.

  • Säkerställ att varje användare som förväntas logga in har ett definierat attribut för det identifierande attributet. Om användarna till exempel ska logga in med sin e-postadress, se till att alla konton har ett definierat e-postattribut, annars misslyckas autentiseringen.

LdapAuth web API avslöjar inte i autentiseringsresponsen orsaken till att inloggningen misslyckades – oavsett om det var ett felaktigt användarnamn, ett felaktigt lösenord eller båda. Om du vill felsöka situationer där en användare inte kan logga in trots att han eller hon har angett rätt användarnamn och lösenord kan du kontrollera tjänstens loggar.

Om en inloggning avvisades på grund av ett felaktigt användarnamn visas en rad som denna i loggen:

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

Om användarnamnet löstes korrekt, men lösenordet var felaktigt:

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

Om vi har löst användarens DN i katalogen på ett korrekt sätt kan vi gå vidare till nästa steg – att kontrollera lösenordet.

Steg 2 – Validering av användarens lösenord

Lösenord kontrolleras av ett LDAP-kommando som kallas bind. En anslutning öppnas till katalogservern och sedan skickas en begäran om att autentisera anslutningen som en viss användare genom att skicka dess DN och lösenord:

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

Om autentiseringsuppgifterna är korrekta returnerar katalogservern en framgång. I annat fall returneras ett LDAP-fel Invalid credentials (kod 49).

Viktiga saker att notera här:

  • Lösenordet kontrolleras mot ett attribut i användarens post som är avsett för detta ändamål. Om du använder ett standardkatalogschema kallas dettaattribut userPassword. I MS Active Directory är namnet på dettaattribut unicodePwd. Se till att varje användare som förväntas logga in har ett definierat attribut för lösenord. Annars kommer autentiseringen att misslyckas.

  • Lösenordsvärdena är ofta hashade och kan skyddas ytterligare, t.ex. genom att göra dem skrivskyddade. Därför kommer en enkel LDAP-läsning och -jämförelse i allmänhet inte att fungera här. Kommandot bind är alltid att föredra.

  • Lösenorden är vanligtvis skiftlägeskänsliga.

Och kom ihåg att loggfiler är din vän. De registrerar detaljer om varje inloggningsförsök och kan användas för snabb felsökning när autentiseringen inte fungerar som förväntat. Om du behöver mer hjälp med att konfigurera LdapAuth kontakta oss.

Lämna ett svar

Din e-postadress kommer inte publiceras.