Symbolbild Dokumentation con4gis-LDAP

Anlegen der notwendigen Konfigurationsdateien

Damit Du Dich später über Deinen LDAP-Server im Backend und Frontend anmelden kannst, musst Du zwei Konfigurationsdateien anlegen. Hierfür benötigst Du einen FTP-Zugang für Deine Webseite.

Im Hauptverzeichnis Deiner Webseite findest Du den Ordner „config“. Lege in diesem Ordner die Dateien „services.yml“ und „security.yml“ an. Falls dort noch keine Datei mit dem Namen „config.yml“ vorhanden ist, so lege auch diese an.

In den folgenden Abschnitten findest Du jeweils den Inhalt, welcher in die Dateien eingefügt werden muss. Kopiere Dir vorher den Inhalt und passe ihn wie beschrieben an.

Die Datei services.yml

In dieser Datei ändere den „host“ auf Deinen LDAP Server. Falls Du den Standardport nicht nutzt ändere zusätzlich den Port (SSL läuft normalerweise unter Port 636). Bei der „encryption“ hast Du die Wahl zwischen „none“ (nicht empfehlenswert), „tls“ oder „ssl“.

Inhalt der services.yml

services:
    Symfony\Component\Ldap\Ldap:
        arguments: ['@Symfony\Component\Ldap\Adapter\ExtLdap\Adapter']
    Symfony\Component\Ldap\Adapter\ExtLdap\Adapter:
        arguments:
            -   host: ad.yourldapserver.com
                port: 389
                encryption: tls
                options:
                    protocol_version: 3
                    referrals: false

Die Datei security.yml

In dieser Datei werden die Einstellungen nun ein wenig genauer. Ändere am besten zuerst im oberen Drittel den Provider für die LDAP-Verbindung. Passe hier dementsprechend Deinen Base DN, Search DN, Search Password, UID Key und Filter an.

Der „search_dn“ enthält den read-only Nutzer DN, welcher für die Authentifizierung mit dem LDAP-Server genutzt wird. Dieser holt sich die Informationen über den Nutzer, der sich einloggen möchte. Das zugehörige Password setzt Du unter „search_password“.

Der „uid_key“ enthält das Attribut vom LDAP-Server, welches den Nutzernamen enthält. Typischerweise ist dies „uid“ oder sAMAccountName“ (Windows AD).

Der Filter ist ein optionales Feld. Hier kannst Du einen Filter nach dem RFC4515 hinterlegen, um die Nutzer, welche sich einloggen können, zu beschränken.

Hinweis: Dieser Filter bestimmt in keiner Weise welche Gruppen, welche Berechtigungen bekommen oder wer einen Administrator-Zugang bekommt. Er bestimmt nur, welche Nutzer des LDAP eine Freigabe für Contao erhalten. Würdest Du hier keinen Filter setzen, können sich alle Nutzer Deines Base DN‘s einloggen. Falls Nutzer keiner importierten LDAP-Gruppe in Contao zugeordnet werden können, erhalten Sie auch keine Berechtigungen.

Wichtig: Falls der Filter für das Frontend und Backend unterschiedlich sein soll, kopiere den Teil ab „con4gis_ldap“ bis zum „filter“ und füge ihn unter dem Filter wieder ein. Ändere anschließend den Namen, sodass nicht beide „con4gis_ldap“ heißen. Achte außerdem darauf, dass die Einrückung genau gleich ist.

Die „chain_provider_backend“ und „chain_provider_frontend“ bestimmen, welche zuvor bestimmten Nutzer sich über welchen Provider am Frontend und Backend anmelden dürfen. Falls Du zwei unterschiedliche Provider nutzt, tausche den Teil „con4gis_ldap“ in der eckigen Klammer durch Deinen zusätzlich erstellten Provider aus.

Im Teil „Firewall“ musst Du nun die zuvor erstellten Konfigurationen hinzufügen, um diese für den Login nutzen zu können. Die einzige Einstellung die Du anpassen musst, ist der „dn_string“. Das ist der DN-String unter welchem der Nutzer im LDAP vorhanden ist. Für den Benutzernamen wird hier der Platzhalter „{username}“ verwendet. Für einen Windows AD Server ist dies typischerweise „DOMÄNE\{username}“.

Inhalt der security.yml

security:
    providers:
        con4gis_ldap:
            ldap:
                service: Symfony\Component\Ldap\Ldap
                base_dn: 'dc=ad,dc=yourldapserver,dc=com'
                search_dn: 'cn=Administrator,cn=Users,dc=ad,dc=yourldapserver,dc=com'
                search_password: '*Password*'
                default_roles: ROLE_USER
                uid_key: uid
                filter: '(objectClass=user)'

        chain_provider_backend:
            chain:
                provider: [contao.security.backend_user_provider, con4gis_ldap]

        chain_provider_frontend:
            chain:
                provider: [contao.security.frontend_user_provider, con4gis_ldap]        

    firewalls:  
        contao_backend:
            provider: chain_provider_backend
            form_login_ldap:
                service: Symfony\Component\Ldap\Ldap
                dn_string: 'uid={username},ou=Users,dc=ad,dc=yourldapserver,dc=com'

        contao_frontend:
            provider: chain_provider_frontend     
            form_login_ldap:
                service: Symfony\Component\Ldap\Ldap
                dn_string: 'uid={username},ou=Users,dc=ad,dc=yourldapserver,dc=com'

Die Datei config.yml

Zu guter Letzt musst Du Contao noch konfigurieren, damit diese beiden Dateien eingelesen und genutzt werden. Dazu musst Du die Datei config.yml bearbeiten bzw. anlegen und die beiden nachfolgend aufgeführten Dateien dort einfügen.

Zum Schluss lösche den Symfony Cache über den Contao Manger oder die Contao Konsole. Somit kannst Du nun mit der Einrichtung im Backend beginnen.

Inhalt der config.yml

imports:
    - { resource: security.yml }
    - { resource: services.yml }