Likes Likes:  0
Resultaten 1 tot 2 van de 2
Geen
  1. #1
    Joni
    LDAP password lijkt niet te worden geaccepteerd
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    LDAP password lijkt niet te worden geaccepteerd

    Hallo,

    Allereerst sorry voor het multiposten, maar ik ben er niet zeker van
    waar dit bericht nou thuishoort (in de Linux- of serverside-hoek). In
    ieder geval: ik ben bezig met een PHP webinterfaceje om LDAP gebruikers
    aan te kunnen maken op een Linux systeem. Het toevoegen van de
    gebruikers lijkt goed te gaan (als ik '$ getent passwd' doe staan ze
    netjes in het lijstje), maar ik kan niet inloggen als de betreffende
    gebruikers (permission denied), ook als de shell gewoon /bin/bash is. Ik
    vermoed dat het ergens niet helemaal goed gaat bij het aanmaken van het
    password:

    // Add user to LDAP
    $info['objectClass'][0] = 'inetOrgPerson';
    $info['objectClass'][1] = 'posixAccount';
    $info['objectClass'][2] = 'shadowAccount';
    $info['cn'] = $_POST['username'];
    $info['sn'] = $_POST['username'];
    $info['gidNumber']= (int) $_POST['gidnumber'];
    $info['uid'] = $_POST['username'];
    $info['uidNumber'] = (int) getFreeUid();
    $info['homeDirectory'] = $_POST['homedir'];
    $info['loginShell'] = $_POST['shell'];
    $info['userPassword'] = crypt($_POST['password1'], '$1$'.genPasswd(8).'$');
    $dn = 'uid='.$_POST['username'].','.$GLOBALS['ldap_user_suffix'];

    // add data to directory
    if (!ldap_add($GLOBALS['ldap_conn'], $dn, $info))
    { echo '<span class="error">An unknown error occured while adding
    user!</span><br><br>'; return; }

    Hierbij is is de functie genPasswd niets anders dan een random password
    generator. Bij de beschrijving in de PHP docs voor de functie crypt
    staat dat de salt van een MD5 hash bestaat uit $1$<8 chars>$ en toch
    lijkt Linux niet blij met dit password... Ideeen iemand?

    Oh ja en nog een vraag: als ik de functie ldap_add uitvoer en er klopt
    iets niet dat krijg ik een warning met een melding wat er aan de hand
    is, maar in een productieomgeving zullen deze warnings meestal niet aan
    staan. Hoe kan ik nou toch die warning opvangen in een string? ldap_add
    returned slechts true of false.

    Bedankt,
    Jonathan

  2. #2
    Heiko
    LDAP password lijkt niet te worden geaccepteerd
    Gast
    n/a Berichten
    Berichten zijn liked



    Thread Starter

    Re: LDAP password lijkt niet te worden geaccepteerd

    Joni wrote:

    > ik ben bezig met een PHP webinterfaceje om LDAP gebruikers
    > aan te kunnen maken op een Linux systeem. Het toevoegen van de
    > gebruikers lijkt goed te gaan (als ik '$ getent passwd' doe staan ze
    > netjes in het lijstje), maar ik kan niet inloggen als de betreffende
    > gebruikers (permission denied), ook als de shell gewoon /bin/bash is.
    > Ik vermoed dat het ergens niet helemaal goed gaat bij het aanmaken van het
    > password:
    >
    > [..knip..]
    >
    > $info['userPassword'] = crypt($_POST['password1'], '$1$'.genPasswd(8).'$');
    >
    > [.knip..]
    >
    > Hierbij is is de functie genPasswd niets anders dan een random password
    > generator. Bij de beschrijving in de PHP docs voor de functie crypt
    > staat dat de salt van een MD5 hash bestaat uit $1$<8 chars>$ en toch
    > lijkt Linux niet blij met dit password... Ideeen iemand?


    Het encrypten van LDAP-passwords in PHP doe ik zo, en dat werkt:
    (weliswaar md5() ipv crypt(), maar zal op ongeveer hetzelfde neerkomen
    denk ik)

    function pwcrypt($password)
    {
    $r = "{MD5}". base64_encode(pack("H*", md5($password)));
    return $r;
    }


    > Oh ja en nog een vraag: als ik de functie ldap_add uitvoer en er klopt
    > iets niet dat krijg ik een warning met een melding wat er aan de hand
    > is, maar in een productieomgeving zullen deze warnings meestal niet aan
    > staan. Hoe kan ik nou toch die warning opvangen in een string? ldap_add
    > returned slechts true of false.


    Dat kan in PHP bijv. zo:

    echo ldap_error($ldap_connectie) . "<br />\n";

    Wat ook nuttig kan zijn, is in /etc/(../)slapd.conf "loglevel" op 256
    (of evt ander level, zie: man slapd.conf) te zetten. De ldap-server
    (slapd) herstarten, je actie opnieuw uit te voeren, en dan de log
    file(s) in /var/log bekijken.

    Wellicht goed om te weten (ik had moeite het te vinden), ook al heb jij
    er zo te zien geen last van:

    Als je LDAP-server geen connecties via het ldap-protocol versie 2
    accepteerd, maar alleen protocol versie 3 (maw in /etc/(../)slapd.conf
    staat "allow bind_v2"). Dan moet je om verbinding te krijgen met PHP de
    het volgende statement gebruiken *na* ldap_connect() en *voor* ldap_bind():

    $succes = ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);


    Jij hebt het blijkbaar voor elkaar om systeem-users in te laten loggen
    via LDAP (even afgezien van dat password probleem). Ik neem aan dat je
    dat via PAM ("libpam-ldap") doet?

    Ik heb hier laatst even wat over gelezen (howto, google), en het zag er
    wat complex en verwarrend uit. Zou jij misschien samengevat kunnen
    vertellen wat/hoe dat te configureren? Alvast bedankt.

    Heiko

Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics