Da denkt man, es wäre kein Problem mit pam_ldap sich gegen mehrere LDAP-Server zu authentifizieren. Aber man wird schnell eines besseren belehrt...
Mein erster Ansatz: einfach die "auth"-Zeile in der passenden pam-config duplizieren und als Parameter einfach eine weitere Config-Datei angeben. Theoretisch wäre das ja möglich - immerhin gibt es einen config=
Parameter für das PAM-Modul. In der Doku steht aber auch:
Configuring multiple instances of pam_ldap for the same service with different configuration files is not supported, because the configuration information is cached.
Blöd - aber es gibt ja auch noch den LDAP-Weg: Referrals.
Nachdem der Referral auf den zweiten Server eingerichtet war, wollte es aber nicht so ganz funktionieren. Aus dem Log-File war ersichtlich, dass der Referral wohl verfolgt wird, aber das Binden danach nicht klappt:
pam_ldap: error trying to bind as user "uid=1234567,dc=testsystem,dc=de" (Invalid credentials)
Eine genaue Analyse brachte dann die Ursache heraus - hier die Schritte vereinfacht dargestellt:
C1: pam_ldap verbindet sich anonym gegen ersten LDAP (S1)
S1: antwortet mit referral
C1: ldap client lib ruft die rebind_proc Methode in pam_ldap auf und bindet sich erfolgreich anonym gegen den zweiten Server (S2)
C1: sendet aufgelöste UserDN und Passwort an S1
Hier liegt natürlich der Fehler. Der Client verfolgt den Referral erfolgreich aber bindet dann gegen den ersten Server!?
Der andere LDAP-Weg ist leider nicht umsetzbar - auf den zweiten LDAP-Server bekomme ich kaum einen authorativen Benutzer mit dem der erste LDAP-Server gegen den zweiten verbinden könnte (dann müsste nicht mehr der Client den Referral verfolgen sondern der erste LDAP-Server selber).
Also bleibt jetzt die einzige Lösung zu warten auf die Reaktion des "Herstellers" PADL - Bug 357