LDAP-käyttäjän todennus selitetään | Connect2id

LDAP-käyttäjän todennus on prosessi, jossa käyttäjänimi ja salasana validoidaan hakemistopalvelimella, kuten MS Active Directory, OpenLDAP tai OpenDJ. LDAP-hakemistot ovat standarditekniikka käyttäjä-, ryhmä- ja käyttöoikeustietojen tallentamiseen ja niiden tarjoamiseen yrityksen sovelluksille.

Käyttäjien tunnistautuminen LDAP-hakemistolla on kaksivaiheinen prosessi. Tässä artikkelissaselitetään sen mekaniikka ja sen jälkeen, miten se määritetään LDapAuth:ssa.

Vaihe 1 – Käyttäjänimen ratkaiseminen hakemistomerkinnän attribuutiksi

Käyttäjämerkinnät hakemistossa tunnistetaan erisnimellä (DN, distinguished name), joka muistuttaa polun kaltaista rakennetta alkaen hakemiston juuresta (oikeanpuoleisimmasta segmentistä):

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

Käyttäjän todentamiseksi LDAP-hakemiston avulla sinun on ensin hankittava hänen DN:nsä sekä hänen salasanansa.

Kirjautumislomakkeella ihmiset yleensä syöttävät yksinkertaisen tunnisteen, kuten käyttäjätunnuksen tai sähköpostiosoitteen. Et odota heidän muistavan hakemistomerkintänsä DN:ää. Se olisi epäkäytännöllistä.

Tämän ongelman ratkaisemiseksi tulee DN-ratkaisu. Se ottaa käyttäjän nimen tai sähköpostin ja suorittaa sitten haun kaikkien käyttäjätietueiden nimi- tai sähköpostiattribuuteista löytääkseen vastaavan DN:n. Hakemistot käyttävät erittäin tehokasta indeksointia ja välimuistiin tallentamista, joten nämä haut ovat tyypillisesti hyvin nopeita.

Hakemistoattribuutit määritellään searchFilterconfigurationparametrissa.LdapAuthin oletuskonfiguraatio hakee UID- ja email-attribuutteja. %u -paikannin korvataan kirjautumislomakkeella syötetyllä käyttäjätunnuksella:

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

Jos halutaan hakea vain UID:tä, hakusuodatin näyttää seuraavalta:

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

Jos haluat hakea UID:n, sähköpostin ja työntekijänumeron, laajenna suodatin muotoon

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

Kaksi tärkeää asiaa, jotka on huomioitava, kun konfiguroidaan DNresoluutiota ja luodaan uusia käyttäjätunnuksia hakemistoon:

  • Ammattitiedon – käyttäjätunnuksen, sähköpostin jne. attribuuttien, joilla käyttäjät kirjautuvat sisään, on oltavayksilöllisiä. Jos havaitaan, että kahdella merkinnällä on sama tunnistava attribuutti,esim. sähköposti, todennus evätään välittömästi.

  • Varmista, että jokaisella käyttäjällä, jonka odotetaan kirjautuvan sisään, on määritelty tunnistava attribuutti. Jos esimerkiksi käyttäjät aikovat kirjautua sisään sähköpostiosoitteellaan, varmista, että kaikilla tileillä on määritelty sähköpostiattribuutti.Muuten todennus epäonnistuu.

LdapAuth-verkkosovellusliittymä ei paljasta todennusvastauksessa kirjautumishäiriön syytä – oliko kyse väärästä käyttäjänimestä, väärästä salasanasta vai molemmista. Vianmääritys tilanteissa, joissa käyttäjä ei pysty kirjautumaan oikean käyttäjätunnuksen ja salasanan antamisesta huolimatta, tehdään tarkistamalla palvelun lokitiedot.

Jos kirjautuminen hylättiin väärän käyttäjänimen vuoksi, lokiin tulee tällainen rivi:

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

Jos käyttäjänimi ratkaistiin oikein, mutta salasana oli väärä:

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

Jos käyttäjän hakemistomerkintä DN ratkaistiin oikein, voimme siirtyä seuraavaan vaiheeseen – salasanan tarkistamiseen.

Vaihe 2 – Käyttäjän salasanan tarkistaminen

Salasanat tarkistetaan LDAP-komennolla nimeltä bind. Yhteys avataan hakemistopalvelimelle, minkä jälkeen lähetetään pyyntö yhteyden todentamiseksi tietyksi käyttäjäksi välittämällä sen merkinnän DN ja salasana:

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

Jos tunnistetiedot ovat oikein, hakemistopalvelin palauttaa onnistumisen. Muussa tapauksessa se palauttaa LDAP-virheen Invalid credentials (koodi 49).

Tärkeää huomioitavaa tässä:

  • Salasana tarkistetaan käyttäjän tietueessa olevasta attribuutista, joka on varattu tähän tarkoitukseen. Jos käytät standardihakemistoskeemaa, tämän attribuutin nimi on userPassword. MS Active Directoryssa tämän attribuutin nimi on unicodePwd. Varmista, että jokaisella käyttäjällä, jonka odotetaan kirjautuvan sisään, on määritetty salasana-attribuutti. Muuten todennus epäonnistuu.

  • Salasana-arvot ovat usein hajautettuja, ja ne voidaan lisäksi suojata esimerkiksi asettamalla ne kirjoitussuojaan. Siksi yksinkertainen LDAP-luku ja -vertailu ei yleensä toimi tässä tapauksessa. Bind-komento on aina suositeltavampi menetelmä.

  • Salasanat ovat tyypillisesti suur- ja pienaakkoset huomioivia.

Muista jälleen, että lokitiedostot ovat ystäväsi. Ne tallentavat tiedot jokaisesta kirjautumisyrityksestä, ja niitä voidaan käyttää nopeaan vianmääritykseen, kun todennus ei toimi odotetulla tavalla. Jos tarvitset lisäapua LdapAuthin konfiguroinnissa, ota meihin yhteyttä.

Vastaa

Sähköpostiosoitettasi ei julkaista.