LDAP Server konfiguration - Fehler in Eingabemaske
-
Also ich hab bei uns das ldap logging aktiv und die konfiguration mal direkt in die SQL Datenbank gepresst (komischerweise kann ich jetzt die konfig im Frontend wieder bearbeiten). Im logfile sehe ich:
2011-10-26 17:04:00 ldap: LDAP Module launched for mandator: idoit_it
2011-10-26 17:04:00 ldap: Found 1 configured LDAP Servers.
2011-10-26 17:04:00 ldap: 1: our.server.company.com (OU=intern,OU=administration,OU=bereiche,DC=our,DC=company,DC=name,DC=com)
2011-10-26 17:04:00 ldap: –--------------------------------------------------------------------------------------------
2011-10-26 17:04:00 ldap: Creating new ldap-library connection to: our.server.company.com:389, user: DC\ldapu
2011-10-26 17:04:00 ldap: Connected to our.server.company.com
2011-10-26 17:04:00 ldap: Searching for username: PC00079
2011-10-26 17:04:00 ldap: Getting user(s) using filter: (&(&(objectClass=*)(cn=PC00079)) in search-path: OU=intern,OU=administration,OU=bereiche,DC=our,DC=company,DC=name,DC=com
2011-10-26 17:04:00 ldap: ** No user found.
2011-10-26 17:04:00 ldap: User not found. Check if PC00079 exist in your configured search-path: OU=intern,OU=administration,OU=bereiche,DC=our,DC=company,DC=name,DC=com
2011-10-26 17:04:00 ldap: ----------------------------------------------------------------------------------------------
2011-10-26 17:04:00 ldap: *** LDAP Auth failed. (false)im wireshark trace am server sehe ich aber nur:
i-doit -> ldap server : bindRequest
ldap server -> i-doit : bindResponse (success)
i-doit -> ldap server : unbindRequestalso direkt nach dem Verbindungsaufbau zum ldap server wir die Verbindung sofort wieder geschlossen, ohne eine Abfrage zu machen.
Funktioniert ldap mit MS AD unter version 0.9.9-7 überhaupt? kann das jemand bestätigen? habe ich einen Grundlegenden Denkfehler drin?
Wenn ich den test im config menü durchführe, dann sagt er wie schon erwähnt:
WEB Frontend:
Connection OK!
50 or more objects found in OU=intern,OU=administration,OU=bereiche,DC=our,DC=company,DC=name,DC=com.logfile:
2011-10-26 18:20:54 ldap: Testing connection to our.server.company.com:389 (DC\ldapu)
2011-10-26 18:20:55 ldap: Connected to our.server.company.com
2011-10-26 18:20:55 ldap: Connection successfull.
2011-10-26 18:20:55 ldap: 50 or more objects found in OU=intern,OU=administration,OU=bereiche,DC=our,DC=company,DC=name,DC=comwireshark:
i-doit -> ldap server : bindRequest
ldap server -> i-doit : bindResponse (success).
.
.eine Abfrage mit jeder Menge Daten (u.a dem Benutzer, den ich versuche anzumelden)
.i-doit -> ldap server : unbindRequest
-
dummerweise spuckt er beim test den verwendeten filter im logfile nicht aus. er meint nur, dass es eben gehen müsste. Beim eigentlichen Verbinden printet er ja den verwendeten filter aus: (&(&(objectClass=*)(cn=PC00079))
und das sieht schon komisch aus, wo hat er denn das erste & her? steht jedenfalls nicht in der Datenbank.
-
(&(objectClass=user)(objectClass=sAMAccountName)(objectClass=Password))
Das ist so denke ich nicht richtig, da sAMAcoountName ein Attribut und nicht keine objectClass ist. Was für einen Filter wolltest du denn genau erstellen? -
jo, der war falsch. Ich hab mitlerweile nur noch "objectClass=*"
Aber es tut leider nicht, beim test findet er zwar mehr als 50 Objekte (laut wireshark ist dort auch mein user dabei) wenn ich mich aber mit meinem user anmelden will, dann funktioniert es nicht (laut wireshark macht er auch keine Abfrage).
Ich weiß halt leider nicht ob es ein Bug ist, oder ich mich einfach nur zu blöd anstelle (zweiteres ist durchaus im Rahmen des möglichen gg)
-
Heheh kann es sein das dein User im i-doit bereits existiert? Denn die Abfrage findet nur unter folgenden drei Bedingungen statt:
- User existiert nicht (User wird gesucht und angelegt)
- User existiert aber Passwort des internen i-doit Users wurde falsch eingegeben (User wird im LDAP gesucht und das LDAP Passwort wird ebenfalls probiert)
- User existiert und wurde über die LDAP Kopplung angelegt (User wird im LDAP gesucht und Passwort wird geprüft)
-
Also ich habe jetzt mal die ersten beiden deiner Bedingungen getestet. Das Ergebnis bleibt in beiden Fällen wie beschrieben:
i-doit login screen sagt: "Invalid username or password!"
/var/www/temp/ldap_debug.txt:2011-11-03 15:22:34 ldap: LDAP Module launched for mandator: idoit_it
2011-11-03 15:22:34 ldap: Found 1 configured LDAP Servers.
2011-11-03 15:22:34 ldap: 1: our.server.company.com (OU=intern,OU=administration,OU=bereiche,DC=our,DC=company,DC=name,DC=com)
2011-11-03 15:22:34 ldap: –--------------------------------------------------------------------------------------------
2011-11-03 15:22:34 ldap: Creating new ldap-library connection to: our.server.company.com:389, user: DOMAIN\ldapr
2011-11-03 15:22:34 ldap: Connected to our.server.company.com
2011-11-03 15:22:34 ldap: Searching for username: prendela
2011-11-03 15:22:34 ldap: Getting user(s) using filter: (&(objectClass=*)(cn=prendela)) in search-path: OU=intern,OU=administration,OU=bereiche,DC=our,DC=company,DC=name,DC=com
2011-11-03 15:22:34 ldap: ** No user found.
2011-11-03 15:22:34 ldap: User not found. Check if prendela exist in your configured search-path: OU=intern,OU=administration,OU=bereiche,DC=our,DC=company,DC=name,DC=comwireshark:
ldap verbindung wird aufgebaut (bindrequest) und sofort wieder geschlossen (unbindrequest) ohne irgend eine Art von kommunikation dazwischen
irgend eine idee?
in der Datenbank steht bei mir noch unter "isys_ldap__filter_array "
a:5:{s:10:"attributes";a:1:{i:0;s:11:"objectClass";}s:6:"values";N;s:10:"field_type";a:1:{i:0;s:1:"3";}s:15:"field_link_type";a:1:{i:0;s:1:"&";}s:14:"field_operator";a:1:{i:0;s:1:"=";}}kann dort ein fehler drin liegen?
-
Ich glaube es liegt am cn=prendela. Setzt du active directory ein? Wenn ja geh mal in die LDAP Mappings unter LDAP -> Directories -> Active Directory und stell die Mappings so ein wie in dem angehangenen Screenshot
-
COOL! COOL! COOL!
es funktioniert! allerherzlichsten Dank!
jetzt hab ich nur noch eine konzeptionelle Frage:
ich hab mich jetzt mit einem user anmelden wollen, der im AD existiert, im i-doit aber nicht angelegt ist:
"You need at least reading rights for logging in to an i-doit mandator.
Contact your system administrator for adding your user into a corresponsing right-group."
das bedeutet also, ich muss die user , welche im i-doit arbeiten sollen im i-doit anlegen? ich hatte das so verstanden, dass die user einfach nur im AD existent sein müssen (über den entsprechenden Filter) und dann zugang haben?
-
Die User müssen nur im LDAP existent sein, nicht im i-doit. Nach erstmaligem Login wird der User im i-doit automatisch angelegt. Wenn du die User automatisch einer Rechtegruppe zuweisen möchtest, machst du dir im AD z.B. eine i-doit-admins Gruppe, dann gehst du auf Kontakte -> Personengruppen -> Admin -> Personengruppen und setz das Feld "LDAP-Gruppe (Mapping):" auf deine AD Gruppe i-doit-admins. Dann sind die neu angelegten LDAP User aus der AD Gruppe automatisch i-doit Admins. Das Gleiche gilt natürlich auch für alle anderen Gruppen.
-
Super, so langsam verstehe ich.
Und wenn der user im AD sein passwort ändert?
funktioniert das?
also dass der user sich anmeldet, das passwort im i-doit falsch ist (weil er es nur im AD, nicht aber im i-doit geändert hat), i-doit am AD nachfragt und das i-doit PW durch das aus der AD überschreibt?
-
hier meine attributes und die db config…
sieht doch alles wie bei dir aus ? oder?