[TYPO3-german] Probleme mit dem LDAP-Login seit dem Update auf TYPO3 4.5.6

Julian Weigle julian.weigle at gmail.com
Mon Sep 26 11:12:56 CEST 2011


[Zusammengefasste Version für die Mailingliste]

Hallo zusammen,

das hier ist eine Zusammenfassung des E-Mail-Verkehrs zwischen den
beiden Webmastern Torsten Kockler und Julian Weigle der Universität
Tübingen mit dem TYPO3-Entwickler Helmut Hummel.

# Problem:
Nach dem Update auf TYPO3 4.5.6 funktionierte unser Login über LDAP
nicht mehr. Bewerkstelligt wird der Login über eine bisher noch
unveröffentlichte Extension "juwldap".


# (falsche) Vermutung:
Ein Bug im Bugfix von Herr Hummel für TYPO3 4.5.6:
http://git.typo3.org/TYPO3v4/Core.git?a=commitdiff;h=b950c15;hp=996785160e49dd45e56d5e11de2ee45840dbccfe

Ich denke in dieser Zeile ist ein (NOT) zuviel:
if (!empty($securityLevel) && !in_array($securityLevel,
standardSecurityLevels)) {

die Zeile müsste nach meinem dafürhalten so lauten:
if (!empty($securityLevel) && in_array($securityLevel,
standardSecurityLevels)) {


# Antwort auf den vermuteten Bug (Herr Hummel):
Wenn $GLOBALS['TYPO3_CONF_VARS']['BE']['loginSecurityLevel']
'normal', 'challenged' oder 'superchallenged' ist, soll
$this->security_level auf 'superchallenged' gesetzt werden.

Wenn $GLOBALS['TYPO3_CONF_VARS']['BE']['loginSecurityLevel']
Beispielsweise 'rsa' ist, soll
$this->security_level auf 'rsa' gesetzt werden.


---------------------

# weitere Antwort von Herr Hummel:

> Ich habe mir jetzt nochmal den Bug genau durchgelesen, aber ich verstehe
> das Problem scheinbar nicht genau.

Ist auch nicht so ohne weiteres zu verstehen. Ich habe länger nach einer
Lösung gesucht.

> Wir nutzen kein eu_ldap, sondern haben hier eine eigene LDAP-Extension
> (die ein Mitarbeiter programmiert hat) im Einsatz. Nach dem Update auf
> 4.5.6 ist bei uns kein Login (lokal oder LDAP mehr möglich).

OK.

> Die Extension setzt
> $GLOBALS['TYPO3_CONF_VARS']['BE']['loginSecurityLevel']='normal'; damit
> wir das Passwort im Klartext an LDAP weitergeben können (ähnlich wie das
> eu_ldap auch immer machte).

Das ist korrekt.

> Durch den Bugfix wird der Wert nun auf
> superchallenged abgeändert und wir bekommen kein Klartextpasswort mehr,
> dass wir an LDAP durchreichen können.

Das ist nicht korrekt.

> So zumindest verstehe ich das, gibt es immer noch eine Möglichkeit das
> Passwort im Klartext zu bekommen?

$GLOBALS['TYPO3_CONF_VARS']['BE']['loginSecurityLevel']

bewirkt, dass bei der Login-Maske das Passwort im Klartext übertragen
und intern weiterverarbeitet (t3lib_userAuth::processLoginData()) wird.

$this->security_level

entscheidet auf welche Art und Weise die Überprüfung des Passworts
durchgeführt (t3lib_userAuth::compareUident()) wird.

In t3lib_userAuth::processLoginData() findest Du auch das "verschollene"
Klartext Passwort.

Das wir nämlich bei
$GLOBALS['TYPO3_CONF_VARS']['BE']['loginSecurityLevel'] = 'normal';
in $loginData['uident_text'] geschrieben aber anschließend wird
$loginData['uident'] mit dem errechneten challenged Wert überschrieben.

Der $loginData Array steht dann in jedem Service der sich von tx_sv_auth
ableitet in $this->login zur Verfügung.

Ihr dürft in eurer Extension also nicht $this->login['uident'] als
Passwort für die LDAP Anfrage verwenden sondern korrekter Weise
$this->login['uident_text']

Dass in $this->login['uident'] das Klartext Passwort steht war ein Bug,
der seit der TYPO3 Version 4.3.0 vorhanden ist (mit Einführung von
rsaauth) und erst in der 4.5.6 gefixt wurde

Hilft das weiter?

Viele Grüße
Helmut

-- Helmut Hummel
TYPO3 Security Team Leader, TYPO3 v4 Core Team Member

TYPO3 .... inspiring people to share!
Get involved: typo3.org



---------------------

[Fazit:]

Die Lösung unseres Problem konnte durch die Änderung von

$this->login['uident'] nach $this->login['uident_text']

vollzogen werden. Vor der TYPO3-Version 4.5.6 stand in login['uident']
nämlich noch das Klartextpasswort, das wir für den LDAP-Login benötigen.
Seit Version 4.5.6 kommt man an dieses Klartextpasswort nur noch heran,
wenn man das loginSecurityLevel auf "normal" setzt und dann das Feld
login['uident_text'] ausliest.

---------------------

An dieser Stelle wollen wir uns noch einmal bei Herrn Hummel für die
unkomplizierte, schnelle und freundliche Hilfe bedanken!

Viele Grüße
Julian Weigle


More information about the TYPO3-german mailing list