LDAP Success ist ein fehler –> im LDAP-Modul
-
Hallo liebe Entwickler,
hier steht ja mein letzter Post zum thema LDAP. Ich habe ein wenig geforscht und bleibe hier hängen:
in /src/classes/components/isys_component_session.class.php Zeile 240:if ($l_found_user["dn"] && $l_ldap_library->try_auth($l_found_user["dn"], $p_password)) {
Diese Abfrage liefert einen fehler zurück.
Die abschließende Debug-Meldung liefert den 'Fehlerwert' 'Success' zurück ???} else $g_mod_ldap->debug("** Auth failed. " . $l_ldap_library->get_ldap_error());
Die Methode 'try_auth' in ldapi_acc.class.php
public function try_auth($p_username, $p_password) { if (strpos($p_username, "CN=") !== 0) { $l_username = $this->get_dn_by_username($p_username); } else $l_username = $p_username; if (!empty($l_username)) { return $this->bind($l_username, $p_password); } }
würde ich gerne einmal mit debug-code versehen. könnt ihr mir dabei helfen?
PS: ist dieses "CN=" dafür verantwortlich, dass die Abfrage fälschlicherweise 'conn=3898 op=2 SRCH base="ou=Users,dc=ebox" scope=1 deref=0 filter="(cn=uid=USER1,ou=users,dc=ebox)"' heißt?
–> cn=uid=??? -
Das Problem mit dem Success ist hier, dass dort die letzte Meldung des LDAP-Connectors ausgegeben wird (get_ldap_error()). Und die letzte Meldung die er dort hat ist scheinbar der Connect. Und die Verbindung ist ok (Success).
Um die try_auth mit debug meldungen zu versehen kannst du folgendes versuchen:
in die erste Zeile (vor das if):
global $g_mod_ldap;
$g_mod_ldap->debug("IN try_auth(): Username. " . var_export($p_username, true) . " - Password: " . var_export($p_password, true));Es ist Möglich, dass der username an der stelle leer ist, das möchte ich mit der Debug Meldung gerne herausbekommen.
Das mit dem CN= greift nur, wenn der Funktion ein einfacher Username übergeben wurde. Hier sollte aber eigentlich eine komplette DN übergeben werden -
LDAP-debug output
2009-05-05 11:48:43 ldap: Creating new ldap-library connection to: adm001:389, user: CN=admin,DC=ebox 2009-05-05 11:48:43 ldap: Connected to adm001 2009-05-05 11:48:43 ldap: Trying auth with DN: uid=testuser,ou=Users,dc=ebox 2009-05-05 11:48:43 ldap: IN try_auth(): Username. 'uid=testuser,ou=Users,dc=ebox' - Password: 'tester' 2009-05-05 11:48:43 ldap: uid=testuser,ou=Users,dc=ebox / testuser authenticated. 2009-05-05 11:48:43 ldap: Creating new ldap-library connection to: adm001:389, user: CN=admin,DC=ebox 2009-05-05 11:48:43 ldap: Connected to adm001 2009-05-05 11:48:43 ldap: Trying auth with DN: uid=testuser,ou=Users,dc=ebox 2009-05-05 11:48:43 ldap: IN try_auth(): Username. 'uid=testuser,ou=Users,dc=ebox' - Password: 'tester' 2009-05-05 11:48:43 ldap: uid=testuser,ou=Users,dc=ebox / testuser authenticated.
syslog-output
May 5 11:48:43 adm001 slapd[24683]: conn=723 fd=22 ACCEPT from IP=127.0.1.1:44828 (IP=0.0.0.0:389) May 5 11:48:43 adm001 slapd[24683]: conn=723 op=0 BIND dn="cn=admin,dc=ebox" method=128 May 5 11:48:43 adm001 slapd[24683]: conn=723 op=0 BIND dn="cn=admin,dc=ebox" mech=SIMPLE ssf=0 May 5 11:48:43 adm001 slapd[24683]: conn=723 op=0 RESULT tag=97 err=0 text= May 5 11:48:43 adm001 slapd[24683]: conn=723 op=1 SRCH base="" scope=1 deref=0 filter="(cn=uid=testuser,ou=users,dc=ebox)" May 5 11:48:43 adm001 slapd[24683]: conn=723 op=1 SRCH attr=cn May 5 11:48:43 adm001 slapd[24683]: conn=723 op=1 SEARCH RESULT tag=101 err=32 nentries=0 text= May 5 11:48:43 adm001 slapd[24683]: conn=723 op=2 BIND anonymous mech=implicit ssf=0 May 5 11:48:43 adm001 slapd[24683]: conn=723 op=2 BIND dn="uid=testuser,ou=Users,dc=ebox" method=128 May 5 11:48:43 adm001 slapd[24683]: conn=723 op=2 BIND dn="uid=testuser,ou=Users,dc=ebox" mech=SIMPLE ssf=0 May 5 11:48:43 adm001 slapd[24683]: conn=723 op=2 RESULT tag=97 err=0 text= May 5 11:48:43 adm001 slapd[24683]: conn=723 op=3 UNBIND May 5 11:48:43 adm001 slapd[24683]: conn=723 fd=22 closed May 5 11:48:43 adm001 slapd[24683]: conn=724 fd=22 ACCEPT from IP=127.0.1.1:44829 (IP=0.0.0.0:389) May 5 11:48:43 adm001 slapd[24683]: conn=724 op=0 BIND dn="cn=admin,dc=ebox" method=128 May 5 11:48:43 adm001 slapd[24683]: conn=724 op=0 BIND dn="cn=admin,dc=ebox" mech=SIMPLE ssf=0 May 5 11:48:43 adm001 slapd[24683]: conn=724 op=0 RESULT tag=97 err=0 text= May 5 11:48:43 adm001 slapd[24683]: conn=724 op=1 SRCH base="" scope=1 deref=0 filter="(cn=uid=testuser,ou=users,dc=ebox)" May 5 11:48:43 adm001 slapd[24683]: conn=724 op=1 SRCH attr=cn May 5 11:48:43 adm001 slapd[24683]: conn=724 op=1 SEARCH RESULT tag=101 err=32 nentries=0 text= May 5 11:48:43 adm001 slapd[24683]: conn=724 op=2 BIND anonymous mech=implicit ssf=0 May 5 11:48:43 adm001 slapd[24683]: conn=724 op=2 BIND dn="uid=testuser,ou=Users,dc=ebox" method=128 May 5 11:48:43 adm001 slapd[24683]: conn=724 op=2 BIND dn="uid=testuser,ou=Users,dc=ebox" mech=SIMPLE ssf=0 May 5 11:48:43 adm001 slapd[24683]: conn=724 op=2 RESULT tag=97 err=0 text= May 5 11:48:43 adm001 slapd[24683]: conn=724 op=3 UNBIND May 5 11:48:43 adm001 slapd[24683]: conn=724 fd=22 closed
Was mich wundert, ist, dass idoit nicht durch die Gruppen im LDAP iteriert um herauszubekommen, ob der User in der LDAP-ADMIN-Gruppe ist, bzw welche Rechte gemappt werden müssen.
Aktuelles Mapping:
Username: cn Groups: cn Firstname: cn Lastname: sn Mail address: Mail Object class: posixAccount
Admin (idoit) –> Administrators (LDAP)
Group Administrators in LDAP:
cn :Administrators displayName :Administrators gidNumber :4711 memberUid : USER1 : testuser : USER(n)
-
Die Authentifikation klappt ja nun. Das Groups mapping ist im moment nur falsch.
Wird in deiner openLDAP installation die Gruppenzugehoerigkeit nicht noch zusätzlich im User abgelegt (zB im Attribut memberof)?