Hallo zusammen,
ich möchte in der Firma einen LDAP-Server (OpenLDAP) einführen, mit dem u.a. zentral die Stammdaten der Mitarbeiter verwaltet werden sollen. Über diesen LDAP-Server sollen außerdem die Authentifikation und Autorisation für interne Applikationen erfolgen. Es wäre natürlich super, den LDAP-Server als zentrales Adressbuch einzubinden. Dieses stellt an sich kein Problem dar, da es hierfür zahlreiche Anleitungen im Netz gibt.
Um den Verwaltungsaufwand und mögliche Fehlerquellen zu reduzieren, werden die Daten der Mitarbeiter alle in einer organizationalUnit "Personen" gespeichert. In der organizationUnit "Gruppen" können Benutzergruppen erstellt werden, die die verknüpften Personen speichern. Die Verknüpfung wird dabei durch einen Alias (siehe http://www.openldap.org/faq/data/cache/1111.html) realisiert, d.h. es wird kein neuer Personeneintrag erstellt, sondern auf einen bestehenden Eintrag verwiesen. So können an einer zentralen Stelle Änderungen durchgeführt werden.
Das Verzeichnis hat folgenden Aufbau:
dc=local,dc=site
|
|-- ou=Gruppen
| |
| |-- ou=Frauen
| | |-- cn=Gabi Tester (Alias)
| | |-- cn=Susanne Mustermann (Alias)
| |
| |-- ou=Maenner
| |-- cn=Heinz Tester (Alias)
| |-- cn=Max Mustermann (Alias)
|
|-- ou=Personen
| |-- cn=Gabi Tester
| |-- cn=Heinz Tester
| |-- cn=Max Mustermann
| |-- cn=Susanne Mustermann
Alles anzeigen
Die Definition eines Personeneintrags sieht so aus:
dn: cn=Max Mustermann,ou=Personen,dc=local,dc=site
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
mail: max.mustermann@local.site
sn: Mustermann
cn: Max Mustermann
Die Definition eines Alias sieht so aus:
dn: cn=Max Mustermann,ou=Maenner,ou=Gruppen,dc=local,dc=site
objectClass: alias
objectClass: top
objectClass: extensibleObject
aliasedObjectName: cn=Max Mustermann,ou=Personen,dc=local,dc=site
cn: Max Mustermann
Nun möchte ich die so definierten Gruppen ebenfalls als Adressbücher in Thunderbird bereitstellen. Daher habe ich mir überlegt, pro Gruppe ein eigenes LDAP-Adressbuch zu erstellen, in dem jeweils der Basis-DN entsprechend gesetzt wird (z.B. "ou=Maenner,ou=Gruppen,dc=local,dc=site").
Und hier kommt nun das Problem, das ich bisher noch nicht lösen konnte:
Setze ich in einem dieser Gruppen-Adressbücher eine Suchanfrage ab (z.B. "* " für alle Personen in dieser Gruppe), dann werden Daten für die verknüpften Personen geliefert. Es werden leider jedoch nicht die Ziele der Verweise (das Objekt in der organizationalUnit "Personen") sondern der definierte Alias zurückgegeben. In diesem stehen natürlich nicht die gewünschten Daten (Nachname, Vorname, eMail-Adresse, usw.).
In der Log-Datei des OpenLDAP findet sich für die Suchanfrage von Thunderbird folgender Eintrag:
slapd[1139]: conn=68 op=3 SRCH base="ou=Maenner,ou=Gruppen,dc=local,dc=site" scope=2 deref=0 filter="(|(mail=**)(cn=* *)(givenName=* *)(sn=* *))"
Das "defer=0" gibt an, daß Aliase nicht aufgelöst werden sollen und wird durch den LDAP-Client (Thunderbird also) übermittelt. Ich suche nun nach einer Möglichkeit Thunderbird so einzustellen, daß die Verweise aufgelöst werden.
Setze ich folgendes ldapsearch ab
dann wird folgendes Ergebnis geliefert (der Alias-Eintrag also, da Verweise nicht aufgelöst werden sollen):
dn: ou=Maenner,ou=Gruppen,dc=local,dc=site
objectClass: organizationalUnit
objectClass: top
ou: Maenner
dn: cn=Heinz Tester,ou=Maenner,ou=Gruppen,dc=local,dc=site
objectClass: alias
objectClass: top
objectClass: extensibleObject
aliasedObjectName: cn=Heinz Tester,ou=Personen,dc=local,dc=site
cn: Heinz Tester
dn: cn=Max Mustermann,ou=Maenner,ou=Gruppen,dc=local,dc=site
objectClass: alias
objectClass: top
objectClass: extensibleObject
aliasedObjectName: cn=Max Mustermann,ou=Personen,dc=local,dc=site
cn: Max Mustermann
Alles anzeigen
Der zugehörige Log-Eintrag ("deref=0"):
slapd[1139]: conn=71 op=1 SRCH base="ou=Maenner,ou=Gruppen,dc=local,dc=site" scope=2 deref=0 filter="(objectClass=*)"
Aktiviere ich das Auflösen von Verweisen, dann bekomme ich folgendes (u.a. den gesuchten Personen-Eintrag):
Das Ergebnis:
dn: cn=Heinz Tester,ou=Personen,dc=local,dc=site
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
mail: heinz.tester@local.site
sn: Tester
cn: Heinz Tester
dn: cn=Max Mustermann,ou=Personen,dc=local,dc=site
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
mail: max.mustermann@local.site
sn: Mustermann
cn: Max Mustermann
dn: ou=Maenner,ou=Gruppen,dc=local,dc=site
objectClass: organizationalUnit
objectClass: top
ou: Maenner
Alles anzeigen
Und der zugehörige Log-Eintrag ("defer=1"):
slapd[1139]: conn=72 op=1 SRCH base="ou=Maenner,ou=Gruppen,dc=local,dc=site" scope=2 deref=1 filter="(objectClass=*)"
Die verwendete Systemkonfiguration:
- OpenLDAP 2.4.17 mit bdb-Backend, OpenSuSE 11.1
- Thunderbird 2.0.0.23, Windows XP Pro und Mac OS X 10.5.8
Weiß jemand, wie ich Thunderbird so einstellen kann, daß Aliase bei der LDAP-Abfrage aufgelöst werden? Oder gibt es eine andere Möglichkeit, daß Thunderbird auf Gruppen im LDAP-Verzeichnis zugreifen kann?
Ich hoffe, daß das nicht zu viele Informationen auf einmal waren und daß ich das Problem verdeutlichen konnte...
Viele Grüße,
Thorsten