Skip to content

Tine Admin HowTo: LDAP Integration

Version: Lu 2021.11

Konfiguration und Problemlösungen im Zusammenhang mit der LDAP Anbindung (Authentifizierung und Benutzerkonten)

Konfiguration Auth

Die Konfiguration kann z.B. über die setup.php angepasst werden ("Authentifizierung/Benutzerkonten").

Alternativ kann die CLI-Funktion --setconfig verwendet werden.

Die aktuelle Konfiguration kann man sich (JSON-kodiert) auch über die Kommandozeile anzeigen lassen:

$ php /usr/share/tine20/setup.php --config=/etc/tine20 --getconfig -- configkey=Tinebase_Authentication_BackendConfiguration

Benutzer-Filter

Gibt an, welche Benutzer sich einloggen können, kann z.B. auch auf bestimmte Gruppen eingeschränkt werden (siehe auch Benutzer/Gruppen-Filter).

Standard-Filter:

&(objectClass=user)

TODO add more info

Konfiguration User/Groups

Die Konfiguration kann z.B. über die setup.php angepasst werden ("Authentifizierung/Benutzerkonten"). Alternativ kann die CLI-Funktion --setconfig verwendet werden.

Die aktuelle Konfiguration kann man sich (JSON-kodiert) auch über die Kommandozeile anzeigen lassen:

$ php /usr/share/tine20/setup.php --config=/etc/tine20 --getconfig -- configkey=Tinebase_User_BackendConfiguration

readonly

Das bedeutet, dass Tine 2.0 keine Änderungen in den LDAP/AD schreibt. Der LDAP ist das führende System.

Benutzer/Gruppen-Filter

Dieser Filter gibt an, welche Benutzer/Gruppen synchronisiert werden. Der Filter folgt der LDAP-Filter Syntax. Hier ein paar Beispiele:

&(objectClass=user)

-> Standardfilter, es werden nur Objekte der Klasse "user" synchronisiert

&(objectClass=user)(memberOf=CN=mygroup,CN=Users,DC=example,DC=org)

-> Erweiterung des Standardfilters, es werden nur Benutzer aus der Gruppe "mygroup" synchronisiert

&(objectClass=posixaccount)(mail=*)

-> Erweiterung des Standardfilters, es werden nur Benutzer mit E-Mail-Adresse synchronisiert -> siehe z.B. #187382: [Phoenix] Anmeldeproblem Kunde Mestron GmbH

Sync-Konfiguration

TODO add more info

Sync-Hooks

TODO add more info

Email-Integration

TODO add more info

sync accounts via CLI (und die Options)

Basis-Kommando (Users + Groups):

php setup.php --sync_accounts_from_ldap

Nur Benutzer:

php setup.php --sync_accounts_from_ldap --onlyusers

Benutzer, die nicht mehr im LDAP sind, löschen:

php setup.php --sync_accounts_from_ldap --syncdeletedusers

Benutzer-Accountstatus synchronisieren:

php setup.php --sync_accounts_from_ldap --syncaccountstatus

Benutzer-Kontaktphoto synchronisieren:

php setup.php --sync_accounts_from_ldap --syncontactphoto

scheduler

Der Scheduler führt den Sync-Users/Groups-Job 1x pro Stunde aus (table tine20_scheduler_task):

         name: Tinebase_User/Group::syncUsers/Groups
       config: {"cron":"0 * * * *","callables":[{"class":"Tinebase_User","method":"syncUsers","args":{"options":{"sync_with_config_options":true}}},{"class":"Tinebase_Group","method":"syncGroups"}]}
     last_run: 2019-08-28 14:00:01
last_duration: 18
      lock_id: NULL
     next_run: 2019-08-28 15:00:00
 last_failure: 2019-03-31 12:00:01
failure_count: 0

Univention LDAP + E-Mail

Die Anbindung an ein Univention LDAP entspricht der normalen LDAP-Konfiguration.

Mit einer Ausnahme: das E-Mail-Attribut (emailAttribute) sollte auf "mailprimaryaddress" gestellt werden.

Beispielkonfiguration (aus dem alten UCS tine-Paket):

LDAPHOST="$ldap_server_name\\:$ldap_server_port"
LDAPBASE=${ldap_base//,/\\\,}

authentication="backend:ldap,host:$LDAPHOST,username:uid=tine20\,cn=tine20\,$LDAPBASE,password:$LDAPPASSWORD,bindRequiresDn:1,baseDn:cn=users\,$LDAPBASE,accountFilterFormat:(&(objectClass=posixAccount)(uid=%s))" \
accounts="backend:ldap,host:$LDAPHOST,username:uid=tine20\,cn=tine20\,$LDAPBASE,password:$LDAPPASSWORD,bindRequiresDn:1,userDn:cn=users\,$LDAPBASE,groupsDn:cn=groups\,$LDAPBASE,defaultUserGroupName:Domain Users,defaultAdminGroupName:Domain Admins,readonly:1"

Konfiguration E-Mail mit UCS Mailbackend:

imap="active:true,backend:ldap_univention,host:localhost,port:143,ssl:tls,useSystemAccount:1,domain:$(ucr get mail/hosteddomains)"
smtp="active:true,backend:ldap_univention,hostname:localhost,port:25,ssl:tls,auth:login,primarydomain:$(ucr get mail/hosteddomains)"
sieve="active:true,hostname:localhost,port:4190,ssl:tls"