Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login

    Fehler während Authentifizierung nach Editieren eines Nutzers

    Scheduled Pinned Locked Moved Entwicklung
    3 Posts 2 Posters 1.1k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • S Offline
      ssc.andre
      last edited by

      Hallo an alle aus der Community,

      ich nutze i-doit in der Version 0.9.9-4 (letzte mögliche Aktualisierung). LDAP und i-doit sind korrekt installiert, neue Nutzer am System werden mittels Gruppenzugehörigkeit korrekt gemappt und angelegt.

      Sobald ich jedoch in der Rubrik Kontakte -> Personen eine Person editiere (indem ich Daten ändere oder eine Firma zuweise oder einfach ohne Änderungen auf Speichern drücke), scheint er den Benutzer lokal anzulegen und verliert jede bestehende Information über AD-Zugehörigkeiten.

      –- vorher ---

      LDAP Info
      Server: x
      DN: y
      CN: z

      enthalten alle korrekte Werte (der Benutzer kann sich ohne Probleme anmelden)

      Informationen für Vorname: Nachname: E-Mail Adresse: Telefon Firma: Telefon Privat: Handy:  Fax: und Abteilung: sind mit den korrekten Daten aus dem AD befüllt (jedoch erscheinen diese nicht in der Übersichtsseite über alle Benutzer).

      --- nach einer Änderung gespeichert ---

      • Informationen erscheinen auf der Übersichtsseite
      • Infobox für LDAP ist nicht mehr vorhanden
      • Anmeldung ist nicht mehr mit dem editierten Benutzer möglich, es erscheint die Meldung Invalid username or password!
      • das ldap logfile meldet jedoch, dass die Anmeldung erfolgreich war

      Wenn ich den entsprechenden Nutzer archiviere und anschließend lösche, wird er erneut registriert und kann sich anmelden, wenn die Daten editiert werden, beginnt der Vorgang von neu. Dieses Verhalten tritt bei allen Nutzern auf.

      Ist dies ein Bug oder durch einen Fehler in irgendeiner Konfigurationsdatei entstanden?

      1 Reply Last reply Reply Quote 0
      • H Offline
        hsz
        last edited by

        Ich hab festgestellt, dass beim ersten anmelden eines LDAP Users eine andere ID in die linktabelle geschrieben wierd, als beim manuellen anlegen. Der folgende Patch holt sich die "richtige" ID. Dann funktioniert auch das editieren von LDAP-Benutzern

        
        Index: src/classes/modules/isys_module_ldap.class.php
        ===================================================================
        --- src/classes/modules/isys_module_ldap.class.php	(Revision 29)
        +++ src/classes/modules/isys_module_ldap.class.php	(Revision 30)
        @@ -137,6 +137,8 @@
         												);
        
         					if (is_numeric($l_user_id) && $l_user_id > 0) {
        +						$l_user=$l_user_dao->get_person_by_username($p_username)->__to_array();
        +						$l_user_id=$l_user['isys_cats_person_list__isys_obj__id'];
         						$this->debug("User account created. User-ID: ". $l_user_id);
        
         						/* Attach the recently created LDAP-user into the configured groups */
        @@ -159,6 +161,9 @@
         					} else {
         						$this->debug("Unknown error while creating the LDAP-User - Received an empty user-id.");
         					}
        +				} else {
        +					$l_user=$l_user_dao->get_person_by_username($p_username)->__to_array();
        +					$l_user_id=$l_user['isys_cats_person_list__isys_obj__id'];
         				}
        
         			} else if ($l_found_user == true) {
        
        
        1 Reply Last reply Reply Quote 0
        • H Offline
          hsz
          last edited by

          Beim Update hat sich noch ein Bug eingeschlichen, da werden die ldap infos zweimal gesetzt.

          Index: classes/cmdb/dao/category/specific/isys_cmdb_dao_category_s_person_master.class.php
          ===================================================================
          --- classes/cmdb/dao/category/specific/isys_cmdb_dao_category_s_person_master.class.php	(Revision 37)
          +++ classes/cmdb/dao/category/specific/isys_cmdb_dao_category_s_person_master.class.php	(Arbeitskopie)
          @@ -122,15 +122,14 @@
           					"isys_cats_person_list__fax = ".$this->convert_sql_text($p_fax).", ".
           					"isys_cats_person_list__department = ".$this->convert_sql_text($p_department).", ".
           					"isys_cats_person_list__isys_connection__id = ".$this->convert_sql_id($l_id).", ".
          -					"isys_cats_person_list__isys_ldap__id = ".$this->convert_sql_id($p_ldap_server).", ".
          -					"isys_cats_person_list__ldap_dn = ".$this->convert_sql_text($p_ldap_dn).", ".
           					"isys_cats_person_list__description = ".$this->convert_sql_text($p_description).", ";
          
          -		if ($p_ldap_dn) {
          +		if ($p_ldap_dn>"")
           			$l_sql .= "isys_cats_person_list__ldap_dn = ".$this->convert_sql_text($p_ldap_dn).", ";
          -			$l_sql .= "isys_cats_person_list__isys_ldap__id = ".$this->convert_sql_text($p_ldap_server).", ";
          -		}
          -			
          +		
          +		if ($p_ldap_server > 0)
          +			$l_sql .= "isys_cats_person_list__isys_ldap__id = ".$this->convert_sql_id($p_ldap_server).", ";
          +		
           		$l_sql .= "isys_cats_person_list__status = ".$this->convert_sql_id($p_status)." ";
          
           		$l_sql .= "WHERE isys_cats_person_list__id = ".$this->convert_sql_id($p_id);
          @@ -170,11 +169,11 @@
           					"isys_cats_person_list__isys_obj__id = '".$p_obj_id."', ".
           					"isys_cats_person_list__description = ".$this->convert_sql_text($p_description).", ";
          
          -		if ($p_ldap_dn)
          +		if ($p_ldap_dn>"")
           			$l_sql .= "isys_cats_person_list__ldap_dn = ".$this->convert_sql_text($p_ldap_dn).", ";
          
           		if ($p_ldap_server > 0)
          -			$l_sql .= "isys_cats_person_list__isys_ldap__id = ".$this->convert_sql_text($p_ldap_server).", ";
          +			$l_sql .= "isys_cats_person_list__isys_ldap__id = ".$this->convert_sql_id($p_ldap_server).", ";
          
           		$l_sql .= "isys_cats_person_list__status = ".$this->convert_sql_id($p_status)." ";
          

          wer nicht will, dass die ldap-Einträge die Felder in der DB überschreiben, kann diesen patch nutzen

          
          Index: classes/cmdb/ui/specific/isys_cmdb_ui_category_s_person.class.php
          ===================================================================
          --- classes/cmdb/ui/specific/isys_cmdb_ui_category_s_person.class.php	(Revision 37)
          +++ classes/cmdb/ui/specific/isys_cmdb_ui_category_s_person.class.php	(Arbeitskopie)
          @@ -67,17 +67,25 @@
          
           				$p_data["ldap_cn"] = $l_ar["cn"][0];
          
          -				$p_data["isys_cats_person_list__mail_address"] = $l_ar["mail"][0];
          +				if($p_data["isys_cats_person_list__mail_address"]=="")
          +					$p_data["isys_cats_person_list__mail_address"] = $l_ar["mail"][0];
          
          -				$p_data["isys_cats_person_list__fist_name"] = utf8_decode($l_ar["givenname"][0]);
          -				$p_data["isys_cats_person_list__last_name"] = utf8_decode($l_ar["sn"][0]);
          +				if($p_data["isys_cats_person_list__fist_name"]=="")
          +					$p_data["isys_cats_person_list__fist_name"] = utf8_decode($l_ar["givenname"][0]);
          +				if($p_data["isys_cats_person_list__last_name"]=="")
          +					$p_data["isys_cats_person_list__last_name"] = utf8_decode($l_ar["sn"][0]);
          
          -				$p_data["isys_cats_person_list__phone_company"] = $l_ar["telephonenumber"][0];
          -				$p_data["isys_cats_person_list__phone_mobile"] = $l_ar["mobile"][0];
          -				$p_data["isys_cats_person_list__phone_home"] = $l_ar["homephone"][0];
          -				$p_data["isys_cats_person_list__fax"] = $l_ar["facsimiletelephonenumber"][0];
          +				if($p_data["isys_cats_person_list__phone_company"]=="")
          +					$p_data["isys_cats_person_list__phone_company"] = $l_ar["telephonenumber"][0];
          +				if($p_data["isys_cats_person_list__phone_mobile"]=="")
          +					$p_data["isys_cats_person_list__phone_mobile"] = $l_ar["mobile"][0];
          +				if($p_data["isys_cats_person_list__phone_home"]=="")
          +					$p_data["isys_cats_person_list__phone_home"] = $l_ar["homephone"][0];
          +				if($p_data["isys_cats_person_list__fax"]=="")
          +					$p_data["isys_cats_person_list__fax"] = $l_ar["facsimiletelephonenumber"][0];
          
          -				$p_data["isys_cats_person_list__department"] = utf8_decode($l_ar["department"][0]);
          +				if($p_data["isys_cats_person_list__department"]=="")
          +					$p_data["isys_cats_person_list__department"] = utf8_decode($l_ar["department"][0]);
          
           				$p_data["ldap_company"] = $l_ar["company"][0];
           				$p_data["ldap_description"] = $l_ar["description"][0];
          
          1 Reply Last reply Reply Quote 0
          • First post
            Last post