Hallo, Patrick Klaus <patrick.klaus@nexgo.de> writes:
Dieter Kluenter schrieb:
Hallo Dieter,
vielen Dank für deine Antwort,
ich hab einen Linux-Client so konfiguriert das Authentifizierung und Benutzerinformationen mit Hilfe von nss_ldap und pam_ldap über Windows Active Directory funktionieren. Die AD-Schema-Erweiterung wurde mit Hilfe von SFU 3.0 erreicht.
Soweit so gut funktioniert das auch. Aber wenn ich einen zweiten oder mehrere Server in der /etc/ldap.conf eintrage bekomme ich immer folgenden Fehler bei der Authentifizierung:
login: cyrus.c:469: ldap_int_sasl_open: Assertion `lc->lconn_sasl_ctx == ((void *)0)' failed Moment, wieso trägst du mehrere Server in /etc/ldap.conf ein? Das ist die Konfiguration für PAM. Wenn dann der Authentifizierungserver nicht eindeutig ist, kann das ja nicht funktionieren, insbesondere wenn, wie in deinem Beispiel, PAM über SASL authentifiziert.
laut
Ich kenne die Doku, das funktioniert aber nur in einer Failover-Umgebung.
# Your LDAP server. Must be resolvable without using LDAP. # Multiple hosts may be specified, each separated by a # space. How long nss_ldap takes to failover depends on # whether your LDAP client library supports configurable # network or connect timeouts (see bind_timelimit). host 127.0.0.1
Ist das die Adresse des Servers?
# The distinguished name of the search base. base dc=padl,dc=com
Ist das deine Suchbasis? [...]
Wie schon erwähnt, nss_ldap kommt mit mehreren Hosts zurecht. Wenn ich einen Ausfall simuliere und an erster Stelle eine falsche IP eintrage, holt er automatisch nach der gesetzten BIND_TIMELIMIT -Zeit den nächsten Server.
Das Modul nss_ldap ist ja nur das Serviceswitch-Modul, nicht das Authentifizierungsmodul.
Stichwort SASL: Ich will überhaupt gar kein SASL benutzen sondern simple Authentification, warum zum Geier er SASL benutzt weiss ich nicht. Wo kann ich das abstellen? Finde das nirgendswo! Eventuell versuch ich mal das Modul zu kompilieren ohne installierte cyrus-sasl2 Bibliotheken.
Das wird nicht gehen, da pam_ldap und nss_ldap mit liblap von OpenLDAP kompiliert wurden, daher auch als dynamische Bibliothek geladen wird, libldap wird aber mit cyrus-sasl kompiliert.
Weiterhin bekomme ich auch in den Log-Meldungen schon mit einem eingetragenen Server:
Mar 30 19:06:51 raid sshd[6983]: pam_ldap: ldap_simple_bind Can't contact LDAP server
Das Modul kann sich nicht an ActivDirectory binden, welchen Distinguished Name hast denn als binddn oder rootbinddn in /etc/ldap.conf eingetragen? Ist dieser DN auch in ActiveDirectory vertreten? Und hat dieser DN auch das Recht Passworte zu authentifizieren? Da ein simple bind nicht funktioniert, versucht pam_ldap ein strong bind mittels sasl.
Ich kann ich das nicht nachvollziehen warum es nicht funktioniert, schließlich klappt es ja mit nss_ldap welches ja die gleiche ldap.conf benutzt, ohne Probleme !
Mache ein ldapsearch -d3 -H ldap://dein.host -b "dc=blah.dc=blub" -x -D "cn=dein,was,weiß,ich" -w passwort -s sub "(objectclass=posixaccount)" Wichtig ist dabei nur die Ausgabe des Debugging-Modus, da kannst du nochvollziehen, was passiert. Dann kannst du noch mittels ldapcompare das Passwort vergleichen lassen. Was klappt mit nss_ldap? -Dieter -- Dieter Kluenter | Systemberatung Tel:040.64861967 | Fax: 040.64891521 mailto: dkluenter(at)dkluenter.de http://www.avci.de