Ankündigung

Einklappen
Keine Ankündigung bisher.

LDAP richtig verwenden (bind?) / mit SHA Kenntwort

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • LDAP richtig verwenden (bind?) / mit SHA Kenntwort

    wir probieren seit Stunden ein verschlüsseltes Passwort auf LDAP zu authentifizieren. Wir können Connecten (ldap_connect) und binden (anonym und mit credentials)...! Jetzt wollen wir ein SHA Passwort vergleichen mit Username etc... wie geht das?

    Unser System:
    Ubuntu Server / LDAP Server / PHP 5 (alles neuste Versionen).

    Über PHP connecten wir zum LDAP Server und Binden auch. Binden können wir aber auch anonym, daher gehen wir davon aus, dass dies noch nicht die gewünschte Authentifizierung ist. Gerne möchten wir schon bei der Eingabe im HTML / JS das Passwort mit einem SHA versehen, und dann nur diesen Hash im PHP mit LDAP vergleichen. Sprich, wir möchte keine Passwörer Klartext haben/nirgends.

    Idee
    $ldappass = sha1($ldappass);
    $ldappass = "{SHA}" . base64_encode($ldappass); > und dann compare oder mit search vergleichen...!?

    Result/Search liefert nur angemeldet PW zurück, und keine fremden
    $res = @ldap_search($ldapconn, $ldapdc, "cn=Administrator");
    $entries = ldap_get_entries($ldapconn, $res);
    echo json_encode($entries, JSON_FORCE_OBJECT);

    Unser Code jetzt:
    (nimmt credentials per POST an und prüft diese und gibt ein JSON Objekt an JS retour mit Status)

    PHP-Code:
    if($_POST['f'] == 'authentificateLDAP'){
                        
            
            
    $ldaphost "192.15.15.249";
            
    $ldapdc "dc=tre,dc=sdf";
            
    $ldapport "389";            
            
            
    $ldappass $_POST['pw'];
            
    //$ldapou = "ou=" . $_POST['ou']; //ou organizationalUnit
                //if($_POST['uid']){
                //    $ldapuid = "uid=" . $_POST['uid']; //uid userId
                //    $ldaprdn = $ldapuid . "," . $ldapdc;
                //}else 
                
    if($_POST['cn']){
                    
    $ldapcn "cn=" $_POST['cn']; //commonName = cn
                    
    $ldaprdn $ldapcn "," $ldapdc;
                }
            
            
    // connect to the ldap Server
            
    $ldapconn ldap_connect$ldaphost$ldapport 
                          or die( 
    "No Connection to {$ldaphost} possible" );
                
            
    //change Protocoll because of failure message "Protocol error"
            
    ldap_set_option($ldapconnLDAP_OPT_PROTOCOL_VERSION3);
                
            if (
    $ldapconn) {
                
                try{
                    
    $ldapbind ldap_bind($ldapconn$ldaprdn$ldappass);
                }catch(
    Object $exc){
                    
                }
            
            
    // authentification code
                    
    if ($ldapbind) {
                        if(
    $ldappass == ""){
                            
    $res =  @ldap_search($ldapconn$ldapdc$ldapcn);
                            
    $authentificationArray['state']='nok';
                            
    $authentificationArray['jsFiles']="test";
                            
    $authentificationArray['htmlCode']= '0';
                            
    $authentificationArray['message']='No password recieved';
                            echo 
    json_encode($authentificationArrayJSON_FORCE_OBJECT);
                            
                        }else{
                            
    //if the authentification worked, we create a JSON object with the OK state and several information to JS create the site
                            
    $authentificationArray['state']='ok';
                            
    $authentificationArray['jsFiles']="test";
                            
    $authentificationArray['htmlCode']='';
                            
    $authentificationArray['message']='User bound';
                            echo 
    json_encode($authentificationArrayJSON_FORCE_OBJECT);
                        }
                    } else {
                        
    //if the authentification failed, we look up, if the username exists and message wheter the username or the passwort is wrong
                        
    $res =  @ldap_search($ldapconn$ldapdc$ldapcn);
                        
    $authentificationArray['state']='nok';
                        
    $authentificationArray['jsFiles']="test";
                        
    $authentificationArray['htmlCode']= '0';
                        
                        if (!
    $res) {
                            
    $authentificationArray['message']='User not found';
                            echo 
    json_encode($authentificationArrayJSON_FORCE_OBJECT);    
                            
                        } else {
                            
    $entries ldap_get_entries($ldapconn$res);
                            
    $authentificationArray['message']= $entries["count"] . ' Users found - PW wrong';
                            echo 
    json_encode($authentificationArrayJSON_FORCE_OBJECT);    
                        }                
                    }
                }

    Wer kann helfen/ Kennt sich mit LDAP aus? Wir schwimmen und müssten in 2 Wochen fertig sein... ....

Lädt...
X