Also ich habe nun einmal in class.auth.handler.backend.php ein paar Kontrollausgaben gemacht.
Code: Alles auswählen
while (($item = $userColl->next()) !== false) {
// var_dump($item);
$uid = $item->get('user_id');
$perm = $item->get('perms');
$pass = $item->get('password'); // Password is stored as a sha256 hash
$salt = $item->get("salt");
}
echo hash("sha256", md5($password) . $salt) ." != $pass";
if ($uid == false || hash("sha256", md5($password) . $salt) != $pass) {
// No user found, sleep and exit
sleep(5);
return false;
}
Interessanterweise ergab dies, dass das Passwort und der hash nicht übereinstimmen, obwohl ich wie gesagt mit exakt dieser Konstellation in das andere System immernoch rein komme.
Code: Alles auswählen
fc102711d7acfa4339e87c646c2a61166b500f470b90dae5c5b06ea31311513c != 30dcfb7760bd9191193077980e7f2414e10effcdb650ca3ef7809d222e28796d
Das interessante ist jedoch, dass in der Datenbank auch
fc102711d7acfa4339e87c646c2a61166b500f470b90dae5c5b06ea31311513c
im Passwortfeld steht. Ich frage mich also wo er für $pass diesen Wert
30dcfb7760bd9191193077980e7f2414e10effcdb650ca3ef7809d222e28796
herbekommt.
Warum hat er bei $pass = $item->get('password'); plötzlich diesen 30dc... Wert, anstatt der, der wirklich in der DB steht, wohingegen die user_id, perms und salt wiederrum stimmen?
Hat jemand ne Idee, wie das sein kann?