MDXDave.de

IT-Freelancer // Android + Coding

Laden...

OpenLDAP-Authentifizierung mit SSL-Verbindung

veröffentlicht vor 6 Monaten, am 14. April 2021  |  GitLab    SSL    LDAP      |  0 Kommentare

Heute ein kurzer Beitrag zum Thema LDAP und der Verbindung mit GitLab und SSL.

LDAP steht für Lightweight Directory Access Protocol und kommt oft in größeren Unternehmensstrukturen zum Einsatz um dort an einer zentralen Stelle Zugriffsrechte für verschiedene Nutzer verwalten zu können und dadurch nicht für jeden Dienst ein eigenes, neues Nutzerkonto erstellt werden muss.

Aber auch für kleinere Anwendungsfälle ist diese Möglichkeit ganz praktisch. Hierfür nutzen wir die OpenSource Anwendung OpenLDAP.

Um die Konfiguration so leicht wie möglich zu halten, nutzen wir hierfür ein vorkonfiguriertes Docker-Image von Oxisia: https://github.com/osixia/dock...

Die Installation von Docker und Docker-Compose lasse ich an dieser Stelle bewusst weg.

Hierfür legen wir einen Ordner an (beispielsweise unter /opt/ldap) und erstellen eine Datei mit dem Namen docker-compose.yml:

version: '3.3'
services:
 openldap:
 environment:
 - 'LDAP_ORGANISATION=My LDAP'
 - LDAP_DOMAIN=example.com
 - LDAP_ADMIN_PASSWORD=XXX
 - LDAP_TLS_ENFORCE=true
 - LDAP_TLS_VERIFY_CLIENT=try
 ports:
 - 389:389
 - 636:636
 image: osixia/openldap:1.5.0
 volumes:
 - './data/slapd/database:/var/lib/ldap'
 - './data/slapd/config:/etc/ldap/slapd.d'
 - './data/slapd/certs:/container/service/slapd/assets/certs'

Die Einstellungen wie LDAP_DOMAIN, LDAP_ORGANISATION und LDAP_ADMIN sollten selbstverständlich angepasst werden.

Anschließend erstellt ihr mittels folgendem Code die notwendigen Ordner:

mkdir -p /opt/ldap/data/slapd/database
mkdir -p /opt/ldap/data/slapd/config
mkdir -p /opt/ldap/data/slapd/certs

In den eben erstellten certs Ordner packt ihr nun euer zu verwendendes Server-Zertifikat. Nutzt ihr beispielsweise Lets Encrypt packt ihr die Dateien wie folgt in den Ordner:

Nun starten wir den Container mittels:

cd /opt/ldap
docker-compose up -d

Beim ersten Start wird nun noch ein DH-Param-File erzeugt, was etwas dauern kann.

In der Zeit können wir dann GitLab konfigurieren. Im folgenden findet ihr den relevanten Ausschnitt aus der gitlab.rb Konfigurationsdatei:

gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close this block with 'EOS' below
 main:
 label: 'My LDAP' # Anpassen
 host: 'ldap.example.com' # Anpassen
 port: 636
 uid: 'uid'
 method: 'ssl'
 bind_dn: 'cn=admin,dc=example,dc=com' # Anpassen
 password: 'XX' # Anpassen
 active_directory: true
 allow_username_or_email_login: true
 block_auto_created_users: false
 base: 'dc=example,dc=com' # Anpassen
 user_filter: ''
 attributes:
 username: ['uid', 'userid', 'sAMAccountName']
 email: ['mail', 'email', 'userPrincipalName']
 name: 'cn'
 first_name: 'givenName'
 last_name: 'sn'
 EOS

Die mit Anpassen markierten Felder müsst ihr - wie geschrieben - anpassen. Bei bind_dn muss das Format stimmen, selbes gilt für den base-Parameter.

Nun übernehmen wir die Konfiguration durch ein

gitlab-ctl reconfigure

und testen die LDAP-Verbindung über SSL mit nachfolgendem Befehl:

gitlab-rake gitlab:ldap:check

Es sollte eine ähnliche Ausgabe erscheinen:

Checking LDAP ...
LDAP: ... Server: ldapmain
LDAP authentication... Success
LDAP users with access to your GitLab server (only showing the first 100 results)
Checking LDAP ... Finished

Glückwunsch - damit funktioniert die Verbindung zwischen OpenLDAP und GitLab über SSL und für die produktive Anwendung müssen nun nur noch die entsprechenden Nutzereinträge in LDAP angelegt werden, damit eine Anmeldung über LDAP in GitLab möglich ist.

Als Tipp noch: Habt ihr die identische E-Mail-Adresse in LDAP und GitLab, führt GitLab die Nutzer automatisch zusammen.