slapd und sasl

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
praetor
Beiträge: 9
Registriert: 03.08.2006 14:25:05

slapd und sasl

Beitrag von praetor » 12.08.2006 21:55:32

Hallo allseits,

nach vielen Stunden, zahllosen Versuchen und unendlichen Recherchen will ich mich doch einmal hier ins Forum wagen, ob mir nicht jemand das Brett vor dem Kopf entfernen kann.

Lokal habe ich unter testing einen slapd (2.3.24-2) zu laufen, mit sasl, und habe keinen Ärger damit. Auf meinem gerade fregegebenen VServer läuft stable mit slapd (2.2.23-8). Der verweigert mir hartnäckig die Authentifizierung via SASL.

An SASL-libraries sind installiert:

Code: Alles auswählen

# dpkg -l | grep sasl
ii  libsasl2       2.1.19-1.5sarg Authentication abstraction library
ii  libsasl2-modul 2.1.19-1.5sarg Pluggable Authentication Modules for SASL
ii  sasl2-bin      2.1.19-1.5sarg Programs for manipulating the SASL users dat
#  
In der slapd.conf steht im Bereich der ersten (einzigen) DB-Definition:

Code: Alles auswählen

sasl-regexp
    uid=(.*),cn=*,cn=auth
    ldap:///dc=behoerdenbrowser,dc=de??sub?(cn=$1)
#    cn=$1,ou=users,dc=behoerdenbrowser,dc=de
Ist doch eigentlich ganz einfach, funktioniert aber nicht (auch der auskommeniterte Ausdruck nicht). Mit "simple authentication" funktioniert das Verzeichnis:

Code: Alles auswählen

~$ ldapsearch -H ldap://88.198.217.228:389 -x -LLL -s base -b "" supportedSaslMechanisms
dn:
supportedSASLMechanisms: OTP
supportedSASLMechanisms: CRAM-MD5
supportedSASLMechanisms: DIGEST-MD5
supportedSASLMechanisms: NTLM
~$ 
und den user "cn=gp,ou=users,dc=behoerdenbrowser,dc=de" gibt es natürlich auch. Trotzdem sagt der LDAP-Client:

Code: Alles auswählen

~$ ldapwhoami -H ldap://88.198.217.228:389 -U gp -Y digest-md5
SASL/DIGEST-MD5 authentication started
Please enter your password:
ldap_sasl_interactive_bind_s: Internal (implementation specific) error (80)
        additional info: SASL(-13): user not found: no secret in database
~$ 
Die syslog sagt:

Code: Alles auswählen

Aug 12 21:46:13 pbloy_kontexis slapd[28944]: conn=7 fd=9 ACCEPT from IP=84.153.84.229:36262 (IP=0.0.0.0:389)
Aug 12 21:46:13 pbloy_kontexis slapd[28944]: conn=7 op=0 BIND dn="" method=163
Aug 12 21:46:16 pbloy_kontexis slapd[28944]: conn=7 op=1 BIND dn="" method=163
Aug 12 21:46:16 pbloy_kontexis slapd[28944]: SASL [conn=7] Failure: no secret in database
Aug 12 21:46:16 pbloy_kontexis slapd[28944]: conn=7 op=1 RESULT tag=97 err=80 text=SASL(-13): user not found: no secret in database
Aug 12 21:46:16 pbloy_kontexis slapd[28944]: conn=7 fd=9 closed
Die Übersetzungsanweisung in der slapd.conf scheint also nicht zu funktionieren, wenn ich das richtig lese. Aber ich kann beim besten Willen nicht erkenn, wieso.

Hat jemand eine Idee?
georg
Zuletzt geändert von praetor am 12.08.2006 22:40:15, insgesamt 1-mal geändert.

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 12.08.2006 22:30:52

Willkommen im Forum!

Kannst Du bitte für Code auch Code Tags verwenden - das erste Code Fragment habe ich für Dich editiert - den Rest kannst Du selber über die Edit Funktion ändern. Danke.

markus

praetor
Beiträge: 9
Registriert: 03.08.2006 14:25:05

Zusätzliche Informationen

Beitrag von praetor » 13.08.2006 15:38:50

Hallo,

um das beschriebene Problem weiter zu lokalisieren, habe ich slapd einmal mit dem debug-level 16383 gestartet und eine Anfrage geloggt. Das Ergebnis (etwa 300 Zeilen) habe ich (vorübergehend) unter

http://www.behoerdenbrowser.de/slaplog.txt

abgelegt. Ich bin nicht Experte genug, da wirklich durchzublicken. Entscheidend erscheinen mir aber die Zeilen 222 ff.:

Code: Alles auswählen

slap_sasl_getdn: u:id converted to uid=gp,cn=DIGEST-MD5,cn=auth
>>> dnNormalize: <uid=gp,cn=DIGEST-MD5,cn=auth>
=> ldap_bv2dn(uid=gp,cn=DIGEST-MD5,cn=auth,0)
ldap_err2string
<= ldap_bv2dn(uid=gp,cn=DIGEST-MD5,cn=auth)=0 Success
=> ldap_dn2bv(272)
ldap_err2string
<= ldap_dn2bv(uid=gp,cn=digest-md5,cn=auth)=0 Success
<<< dnNormalize: <uid=gp,cn=digest-md5,cn=auth>
==>slap_sasl2dn: converting SASL name uid=gp,cn=digest-md5,cn=auth to a DN
slap_sasl_regexp: converting SASL name uid=gp,cn=digest-md5,cn=auth
<==slap_sasl2dn: Converted SASL name to <nothing>
SASL Canonicalize [conn=0]: slapAuthcDN="uid=gp,cn=digest-md5,cn=auth"
SASL Canonicalize [conn=0]: authzid="gp"
SASL [conn=0] Failure: no secret in database
Ich lese das so: Die Funktion ldap_bv2dn liefert den richtigen bzw. erwarteten DN für die Authentifizierung zurück, nämlich
uid=gp,cn=DIGEST-MD5,cn=auth
Die Funktion slap_sasl2dn kann sie aber nicht in den DN des Verzeichniseintrags umwandeln. Erwartet war
cn=gp,ou=users,dc=behoerdenbrowser,dc=de
Diesen Eintrag gibt es und er hat auch ein im Klartext gespeichertes Attribut userPassword.

Gibt es hier jemanden, der Experte genug ist, aus dem Log die Fehlerquelle zu finden? Der wäre sofort mein Freund.
:D praetor

Antworten