Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    871

    come creare un utente su ldap da php

    riesco a creare un utente ldap da php, ma lo crea in stato "disabilitato" su ldap, non riesco a trovare l'attributo da settare per creare un utente "abilitato", qualcuno sa aiutarmi?


    questo è il codice che sto usando:


    Codice PHP:
    try {    add_ldap_user ();} catch(Exception $e) {    echo "errore add_ldap_user: ".$e->getMessage();}
    function 
    add_ldap_user () {    $msg null;    // config    $ldapserver = 'MIOSERVER.LOCAL';    $ldapuser      = 'adminuser';    $ldappass     = 'adminpassword';    $branch    = "cn=Users,dc=MIODOMINIO,dc=LOCAL";
            
    $ldapconn=ldap_connect($ldapserver);  // must be a valid LDAP server!
        
    if (!$ldapconn) {        $msg "Unable to connect to LDAP server";        throw new Exception($msg);    }        ldap_set_option($ldapconnLDAP_OPT_REFERRALS1) ;
            if (!
    ldap_set_option($ldapconnLDAP_OPT_PROTOCOL_VERSION3)) {        $msg "Failed to set protocol version to 3";        throw new Exception($msg);    }        if (!ldap_set_option($ldapconnLDAP_OPT_REFERRALS1)) {        $msg "Failed to set LDAP_OPT_REFERRALS to 1";        throw new Exception($msg);    }        $ldapbind ldap_bind($ldapconn$ldapuser$ldappass);
            if (!
    $ldapbind) {        $msg "Unable to bind: ";        $msg .= ldap_error($ldapconn);        throw new Exception($msg);    }        echo "connessione a ldap ok3";    
        
    $base_dn "cn=John,cn=Users,dc=MIODOMINIO,dc=LOCAL";        $entry = array();    $entry["cn"] = "John3";    $entry["objectclass"] = "person";    $entry["samaccountname"] = "prova1";    $entry["mail"] = "test1@test.it";    $entry["objectCategory"] ='CN=Person,CN=Schema,CN=Configuration,dc=MIODOMINIO,dc=LOCAL';    $newuser_plaintext_password "Elettra77";        $r ldap_add($ldapconn'CN=John12,'.$branch, array(        'cn'            => 'John12',        'name'          =>  'Smith',        'sn'            => 'asd',        'instanceType'  => '4',        'objectCategory'=> 'CN=Person,CN=Schema,CN=Configuration,dc=MIODOMINIO,dc=LOCAL',        'mail'          => 'john12@miodominio.it',        'objectclass'=>array(            'top',            'user',            'person',            'organizationalPerson'        ),        'userPassword' => '{MD5}' base64_encode(pack('H*',md5($newuser_plaintext_password))),
            
    'samaccountname' => 'dddddd',        'displayname' => 'John12'    ));
        if (
    $r)    {        echo 'Success';    }    else    {        $msg "unable to ldap_add: ";        echo $msg;        echo "LDAP-Error: " ldap_error($ldapconn) . "<br />\n";        echo ldap_errno($ldapconn) ;    }            ldap_close($ldapconn);    } 

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    871
    purtroppo il codice php è venuto tutto spaginato e non me lo fa modificare, lo rimetto qua sotto

    Codice PHP:
    try {    add_ldap_user ();} catch(Exception $e) {    echo "errore add_ldap_user: ".$e->getMessage();}
    function 
    add_ldap_user () {    $msg null;    // config    $ldapserver = 'MIOSERVER.LOCAL';    $ldapuser      = 'adminuser';    $ldappass     = 'adminpassword';    $branch    = "cn=Users,dc=MIODOMINIO,dc=LOCAL";
            
    $ldapconn=ldap_connect($ldapserver);  // must be a valid LDAP server!
        
    if (!$ldapconn) {        $msg "Unable to connect to LDAP server";        throw new Exception($msg);    }        ldap_set_option($ldapconnLDAP_OPT_REFERRALS1) ;
            if (!
    ldap_set_option($ldapconnLDAP_OPT_PROTOCOL_VERSION3)) {        $msg "Failed to set protocol version to 3";        throw new Exception($msg);    }        if (!ldap_set_option($ldapconnLDAP_OPT_REFERRALS1)) {        $msg "Failed to set LDAP_OPT_REFERRALS to 1";        throw new Exception($msg);    }        $ldapbind ldap_bind($ldapconn$ldapuser$ldappass);
            if (!
    $ldapbind) {        $msg "Unable to bind: ";        $msg .= ldap_error($ldapconn);        throw new Exception($msg);    }        echo "connessione a ldap ok3";    
        
    $base_dn "cn=John,cn=Users,dc=MIODOMINIO,dc=LOCAL";        $entry = array();    $entry["cn"] = "John3";    $entry["objectclass"] = "person";    $entry["samaccountname"] = "prova1";    $entry["mail"] = "test1@test.it";    $entry["objectCategory"] ='CN=Person,CN=Schema,CN=Configuration,dc=MIODOMINIO,dc=LOCAL';    $newuser_plaintext_password "Elettra77";        $r ldap_add($ldapconn'CN=John12,'.$branch, array(        'cn'            => 'John12',        'name'          =>  'Smith',        'sn'            => 'asd',        'instanceType'  => '4',        'objectCategory'=> 'CN=Person,CN=Schema,CN=Configuration,dc=MIODOMINIO,dc=LOCAL',        'mail'          => 'john12@miodominio.it',        'objectclass'=>array(            'top',            'user',            'person',            'organizationalPerson'        ),        'userPassword' => '{MD5}' base64_encode(pack('H*',md5($newuser_plaintext_password))),
            
    'samaccountname' => 'dddddd',        'displayname' => 'John12'    ));
        if (
    $r)    {        echo 'Success';    }    else    {        $msg "unable to ldap_add: ";        echo $msg;        echo "LDAP-Error: " ldap_error($ldapconn) . "<br />\n";        echo ldap_errno($ldapconn) ;    }            ldap_close($ldapconn);    } 

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    871
    niente da fare lo visualizza spaginato, provo a togliere il tag PHP

    try {
    add_ldap_user ();
    } catch(Exception $e) {
    echo "errore add_ldap_user: ".$e->getMessage();
    }


    function add_ldap_user () {
    $msg = null;
    // config
    $ldapserver = 'MIOSERVER.LOCAL';
    $ldapuser = 'adminuser';
    $ldappass = 'adminpassword';
    $branch = "cn=Users,dc=MIODOMINIO,dc=LOCAL";



    $ldapconn=ldap_connect($ldapserver); // must be a valid LDAP server!


    if (!$ldapconn) {
    $msg = "Unable to connect to LDAP server";
    throw new Exception($msg);
    }

    ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 1) ;



    if (!ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3)) {
    $msg = "Failed to set protocol version to 3";
    throw new Exception($msg);
    }

    if (!ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 1)) {
    $msg = "Failed to set LDAP_OPT_REFERRALS to 1";
    throw new Exception($msg);
    }

    $ldapbind = ldap_bind($ldapconn, $ldapuser, $ldappass);



    if (!$ldapbind) {
    $msg = "Unable to bind: ";
    $msg .= ldap_error($ldapconn);
    throw new Exception($msg);
    }

    echo "connessione a ldap ok3";



    $base_dn = "cn=John,cn=Users,dc=MIODOMINIO,dc=LOCAL";

    $entry = array();
    $entry["cn"] = "John3";
    $entry["objectclass"] = "person";
    $entry["samaccountname"] = "prova1";
    $entry["mail"] = "test1@test.it";
    $entry["objectCategory"] ='CN=Person,CN=Schema,CN=Configuration,dc=MIODOMIN IO,dc=LOCAL';
    $newuser_plaintext_password = "Elettra77";

    $r = ldap_add($ldapconn, 'CN=John12,'.$branch, array(
    'cn' => 'John12',
    'name' => 'Smith',
    'sn' => 'asd',
    'instanceType' => '4',
    'objectCategory'=> 'CN=Person,CN=Schema,CN=Configuration,dc=MIODOMINI O,dc=LOCAL',
    'mail' => 'john12@miodominio.it',
    'objectclass'=>array(
    'top',
    'user',
    'person',
    'organizationalPerson'
    ),
    'userPassword' => '{MD5}' . base64_encode(pack('H*',md5($newuser_plaintext_pas sword))),


    'samaccountname' => 'dddddd',
    'displayname' => 'John12'
    ));


    if ($r)
    {
    echo 'Success';
    }
    else
    {
    $msg = "unable to ldap_add: ";
    echo $msg;
    echo "LDAP-Error: " . ldap_error($ldapconn) . "<br />\n";
    echo ldap_errno($ldapconn) ;
    }

    ldap_close($ldapconn);

    }

  4. #4
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    763
    l'attriubuto da usare è "userAccountControl":
    con valore 544 non dovrebbe salvare la password specificata in "userPassword" e lascia spuntato l'opzione "User must change password at next logon"
    con valore 512 dovrebbe salvarti la password specificata in "userPassword"
    eXvision

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    871
    Quote Originariamente inviata da brodik Visualizza il messaggio
    l'attriubuto da usare è "userAccountControl":
    con valore 544 non dovrebbe salvare la password specificata in "userPassword" e lascia spuntato l'opzione "User must change password at next logon"
    con valore 512 dovrebbe salvarti la password specificata in "userPassword"

    grazie mille della risposta!
    ho aggiunto questa riga di codice
    'userAccountControl' => '512'
    nel seguente modo

    'objectclass'=>array(
    'top',
    'user',
    'person',
    'organizationalPerson'
    ),
    'userPassword' => '{MD5}' . base64_encode(pack('H*',md5($newuser_plaintext_pas sword))),


    'samaccountname' => 'dddddd',
    'displayname' => 'John12',
    'userAccountControl' => '512'
    )

    Mentre prima di questa modifica mi creava l'utente (ma lo creava disabilitato) adesso mi restituisce quest'errore:
    ldap_add(): Add: Server is unwilling to perform
    LDAP Error: 53 (Unwilling to perform)

    Cercando su internet si legge questo per l'errore con numero 53
    LDAP_ENCODING_ERROR 0x53

    Non so come risolverlo, sai aiutarmi ulteriormente?

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    871
    Quote Originariamente inviata da brodik Visualizza il messaggio
    l'attriubuto da usare è "userAccountControl":
    con valore 544 non dovrebbe salvare la password specificata in "userPassword" e lascia spuntato l'opzione "User must change password at next logon"
    con valore 512 dovrebbe salvarti la password specificata in "userPassword"

    usando il codice 544, crea l'utente abilitato, ma appunto con la password da cambiare al primo accesso
    avrei bisogno di crearlo con la password che non scade mai
    conosci mica il codice da usare?

    su internet ho trovato questo

    DONT_EXPIRE_PASSWORD 0x10000 65536

    ho provato quindi ad usare il codice 65536, ma non funziona, mi dice sempre l'errore
    LDAP Error: 53 (Unwilling to perform)

    conosci mica il codice da usare per creare un account abilitato con la password senza scadenza?

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    871
    ho provato anche il codice 66048 che sarebbe la somma di 512 (account normale) + 65536 (password senza scadenza)
    non funziona, mi appare il messaggio
    LDAP Error: 53 (Unwilling to perform)

  8. #8
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    763
    da stackoverflow:
    I managed to work out the answer today.
    I added the following line into /etc/ldap/ldap.conf
    TLS_REQCERT never
    After this I was able to connect but was still getting the error message:
    Server Unwilling to Perform
    This was because I was trying to set the password plain text like:
    $ldaprecord["unicodepwd"] = 'MyPassword1234'
    You need to encode it first so once I change my code to this it works:
    ## Create Unicode password
    ## Assumes that given password is in UTF-8 encoding!
    ## Adjust it to the actual encoding of the password
    $pwdtxt = "MyPassword1234";
    $newPassword = '"' . $pwdtxt . '"';

    $newPass = iconv( 'UTF-8', 'UTF-16LE', $newPassword );

    $ldaprecord["unicodepwd"] = $newPassw;
    Hope this helps someone!

    eXvision

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    871
    Quote Originariamente inviata da brodik Visualizza il messaggio
    da stackoverflow:
    ho provato la soluzione di stackoverflow, ma non funziona, genera sempre il solito messaggio di errore, questo il mio codice

    $pwdtxt = "miapassword";
    $newPassword = '"' . $pwdtxt . '"';

    $newPass = iconv( 'UTF-8', 'UTF-16LE', $newPassword );

    $r = ldap_add($ldapconn, 'CN=John5,'.$branch, array(
    'cn' => 'John5',
    'name' => 'Smith5',
    'sn' => 'asd',
    'instanceType' => '4',
    'objectCategory'=> 'CN=Person,CN=Schema,CN=Configuration,dc=MIOSERVER ,dc=LOCAL',
    'mail' => 'john5@mioserver.it',
    //'userPassword' => '{MD5}' . base64_encode(pack('H*',md5($newuser_plaintext_pas sword))),
    //'userPassword' => $newPass,
    'unicodepwd' => $newPass,
    'samaccountname' => 'rrrrrr',
    'displayname' => 'John5',
    'userAccountControl' => '66048',
    'objectclass'=>array(
    'top',
    'user',
    'person',
    'organizationalPerson'
    )

    c'è un posto dove poter leggere il log dell'ldap, dove magari viene scritto più dettagliatamente che problema c'è?

    io uso un server windows server 2019 essential
    con ldap versione 10.0.17763.1

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2021 vBulletin Solutions, Inc. All rights reserved.