Hallo an alle,
ich hoffe ich mache nichts falsch, das hier ist mein erste Mail an eine
Mailingliste.
Bei mir läuft:
TYPO3 4.7.1
mit felogin 4.7.1
und felogin_security 0.0.1
Ich möchte FE-Nutzer ausschließlich über das Backend anlegen können, das
"funktioniert" auch. Wenn ich einen Testnutzer mit dem Passwort "hallo"
im Backend anlege, steht in der Datenbank in der Passwortspalte
"$1$OsjLcQFF$Zr3XF.HIGPZ8bG3sYLgy/."das scheint gesalted zu sein, denn
es ändert sich auch bei jedem abspeichern. Aber ich finde das salt
nicht. Wo könnte es sein? Hab nur eine tx_rsaauth_keys gefunden, dort
ist aber nur ein Eintrag drin, ich habe aber zwei FE-User.
Außerdem habe ich, nach fehlgeschlagenem Login versucht, mal den Weg der
Logindaten zu gehen und bin dann in der Datei t3lib_userAuth gelandet.
Dort kommen die Logineingaben 1:1 an.
(abhängig von aktiviertem JavaScript RSA-Verschlüsselt oder nicht)
Mit JavaScript:
$loginData = array(
'status' => 'login',
'uname' => 'loginname',
'uident' =>
'rsa:RwAS+duvVaT/F+MHMUIlFVn9UpE+Q4AOLG7lcp/GD5Fbxncpl4CJPtMMIMCSkCzQL/xaTsmzhzppw5IUKB9ZRMXbGciYmUI6/3QFq5gasD6N/p9Jp1/ghK4y37OrteYnzJleZvASXvTDBhYpHrOIVe+j2RnJO66yzSz+wvLhoR0=',
'chalvalue' => '',
'permanent' => 0
)
Ohne JavaScript:
$loginData = array(
'status' => 'login',
'uname' => 'loginname',
'uident' => 'hallo',
'chalvalue' => '',
'permanent' => 0
)
nach einem Umweg über die class.tx_sv_authbase.php lande ich wieder in
der class.t3lib_userauth.php in der methode compareUident().
function compareUident($user, $loginData, $passwordCompareStrategy = '') {
$OK = FALSE;
$passwordCompareStrategy = $passwordCompareStrategy ?
$passwordCompareStrategy : $this->security_level;
t3lib_utility_debug::Debug($passwordCompareStrategy,
'passwordcomparestrategy in class.t3lib_userauth');
t3lib_utility_debug::Debug($loginData, 'logindata in compareUident in
class.t3lib_userauth');
t3lib_utility_debug::Debug($user, 'user in compareUident in
class.t3lib_userauth');
switch ($passwordCompareStrategy) {
case 'superchallenged': // If superchallenged the password
in the database ($user[$this->userident_column]) must be a md5-hash of
the original password.
case 'challenged':
// Check challenge stored in cookie:
if ($this->challengeStoredInCookie) {
session_start();
if ($_SESSION['login_challenge'] !==
$loginData['chalvalue']) {
if ($this->writeDevLog) {
t3lib_div::devLog('PHP Session stored
challenge "' . $_SESSION['login_challenge'] . '" and submitted challenge
"' . $loginData['chalvalue'] . '" did not match, so authentication
failed!', 't3lib_userAuth', 2);
}
$this->logoff();
return FALSE;
}
}
if ((string) $loginData['uident_' .
$passwordCompareStrategy] === (string) md5($user[$this->username_column]
. ':' . $user[$this->userident_column] . ':' . $loginData['chalvalue'])) {
$OK = TRUE;
}
break;
default: // normal
if ((string) $loginData['uident_text'] === (string)
$user[$this->userident_column]) {
$OK = TRUE;
}
break;
}
return $OK;
}
Dort ist:
$passwordCompareStrategy = 'rsa' und somit rennt er in den default-modus
wo er einfach das übermittelte Passwort (entweder rsa:... oder 'hallo')
mit dem salted hash in der Datenbank abgleicht.
Da kann doch irgendwas nicht richtig sein. Also entweder habe ich das
Dingen komplett vor die Wand gesetzt oder aber da ist ein Bug. Wäre für
Hilfe sehr dankbar, sollte es ein Bug sein, könnte ich versuchen mich
drum zu kümmern (loginData in einem Hook wieder aueinandernehmen und das
aus der Datenbank auch, sodass er gerne in den Default: reinkann). Wie
ihr aber vielleicht merkt bin ich nicht so erfahren.
Danke schonmal
LG Frederik
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german