Seite 1 von 1

Problem mit Umlaute in Passwörter

Verfasst: 26.02.2007 14:37
von fishbart
Hallo Leute,

ich habe folgendes Problem, in mein phpBB kann ich mit passwörter ohne Umlaute problemlos anmelden. Diejenige nutzer, die Umlaute in Passwörter (also ÄÖÜß) verwenden, können sich nicht anmelden. Liegt es eventuell daran, dass im Script umlaute vornerein abgelehnt wird? Wenn ja, kann man das umstellen.

In dem Forum (V. 2.0.22) ist noch ein Ldap-Plugin drin, wenn ein neuer nutzer sich anmeldet, wird dieser automatisch registriert.

Habe diesen Forum schon nach vorhandenen Lösung durchforstet, ebenso in der Dokumentation bzw. Knowledge Base, werde trotzdem irgendwie nicht schlau daraus.

Wer weiss Rat??

Gruß, fishbart

Verfasst: 26.02.2007 14:51
von Miriam
Umlaute werden im Script nicht abgelehnt. Ich wüsste jedenfalls nicht wo.

Der Verschlüsselung ist es egal, ob die Passwort Umlaute dirn haben, oder nicht. Vllt. haut da Dein Script dazwischen und ändert die Umlaute (z.B. in HTML Code) um.

Verfasst: 26.02.2007 15:08
von fishbart
Also, ich hab mir nochmal das login.php angeschaut, durch den Mod LDAP Auth wurden einige Zeilen getauscht, aber so wie ich das betrachte, scheint es wohl in ordnung zu sein, hier ein auszug:

Code: Alles auswählen

 
 if(( (($row['user_type'] == User_Type_Both || $row['user_type'] == User_Type_LDAP) && ($ldap_auth_result == LDAP_AUTH_OK || ($ldap_auth_result == LDAP_INVALID_USERNAME && md5($password) == $row['user_password'])))
               || (md5($password) == $row['user_password'] && (($board_config['auth_mode'] == 'phpbb' && $row['user_type'] == User_Type_Both) || $row['user_type'] == User_Type_phpBB))
               ) && $row['user_active'] )
            {
               if ($board_config['auth_mode'] == 'ldap' && $ldap_auth_result == LDAP_AUTH_OK && $board_config['ldap_group_sync'] == 1) {
                  ldapUpdateGroups($username);
               }
Das ist meiner meinung nach wohl die einzige Stelle, an dem das Script die Umlaute verdreht. :(

Verfasst: 26.02.2007 16:11
von Miriam
Also ich sehe da nichts, was da in irgendeiner Art die Passwörter verändern sollte.
Daher wird es wohl eher mit der usercp_register.php zusammenhängen, denn da wird das erste mal das PW des Users in die DB eingetragen.

Ansonsten wird es nur ausgelesen oder mit MD5("eingegebenens PW") verglichen.

Es sei denn die Variable $password wird duch die login.php schon vorher manipuliert

Verfasst: 05.03.2007 10:06
von fishbart
Also, in login.php wurde wegen ldap der folgende code

Code: Alles auswählen

if( md5($password) == $row['user_password'] && $row['user_active'] )         
            {
durch den ausgetauscht, mehr kann ich im login auch nichts erkennen :(

Code: Alles auswählen


if(( (($row['user_type'] == User_Type_Both || $row['user_type'] == User_Type_LDAP) && ($ldap_auth_result == LDAP_AUTH_OK || ($ldap_auth_result == LDAP_INVALID_USERNAME && md5($password) == $row['user_password'])))
               || (md5($password) == $row['user_password'] && (($board_config['auth_mode'] == 'phpbb' && $row['user_type'] == User_Type_Both) || $row['user_type'] == User_Type_phpBB))
               ) && $row['user_active'] )
            {
               if ($board_config['auth_mode'] == 'ldap' && $ldap_auth_result == LDAP_AUTH_OK && $board_config['ldap_group_sync'] == 1) {
                  ldapUpdateGroups($username);
               }

Verfasst: 07.03.2007 13:49
von fishbart
Noch eine Frage dazu, wenn die Passwortabfrage über die Lokale Datenbank läuft, funktioniert das Login einwandfrei, durch LDAP wird das PW irgendwie nicht angenommen. Leider kann ich im Script nicht erkennen, an welcher stelle das PW geprüft wird, seitens des Ldap-Plugin ist es nicht zu finden, da dort das Passwortvariable in der Übergabe völlig in ordnung ist.
Gibt es eine andere Stelle, an dem das PW noch geprüft wird?

Dank im Voraus.

fishbart

Lösung des Problems

Verfasst: 26.03.2007 08:34
von fishbart
Hallo Leute,

da ich das Problem vor einiger Zeit gefunden und Behoben habe, will ich das
nicht vorenthalten.

Ich musste die Variable des Passwortes in einem utf-8 Format encodieren, dann klappt es auch. Befehl in functions_ldap.php direkt nach der Parameterübergabe einfügen.

Code: Alles auswählen

$variable = utf8_encode($variable);