Dieser Proof of Concept (PoC) demonstriert eine Authentifizierungslösung für E-Mail-Dienste, die sowohl OAuth2 für Webmail als auch gerätebasierte Authentifizierungen für native E-Mail-Clients (Thunderbird, etc.) unterstützt.
- Webmail-Zugriff via OAuth2/OIDC
- Selfservice-Portal für Benutzer
- Verwaltung von Geräte-spezifischen Passwörtern über Webinterface
- Automatische Deaktivierung der LDAP-Authentifizierung nach Einrichtung von Geräte-Passwörtern
- OpenLDAP (Benutzerverwaltung)
- Keycloak (Identity Provider)
- PostgreSQL (Datenbank)
- Roundcube (Webmail-Client)
- Dovecot/Postfix (Mailserver)
- FreeRADIUS (für WLAN-Accounts)
- Django (Selfservice-Portal)
- Docker und Docker Compose
- OpenSSL (um die LDAP-Passwörter zu generieren)
- Bearbeitung der
/etc/hostsDatei - Browser auf dem Docker-Host-System
Fügen Sie folgende Einträge in /etc/hosts hinzu:
127.0.0.1 myselfservice
127.0.0.1 keycloak
127.0.0.1 roundcube
cd docker/dev
./init.shDas init.sh Script automatisiert die initiale Einrichtung:
- Erstellt eine
.envDatei aus derenv.example - ruft ein Script
openldap/generate_bootstrap.shauf, um OpenLDAP vorzubereiten
docker compose -f docker-compose.dev.yml up --build- Initialzustand:
- Anmeldung an Webmail http://roundcube:8081 (SSO) und LDAP-Zugangsdaten (Username: testuser1@example.org, Passwort: testuser1)
- Gültige Anmeldung an imap (localhost:143 STARTTLS) mit LDAP-Zugangsdaten
- Wechsel zu Geräte-Passwörtern:
- Anmelden an Django-Webinterface (SSO (Username: testuser1@example.org, Passwort: testuser1)) -> Email-Konten -> Account generieren
- Anmeldung mit LDAP-Zugangsdaten an imap (localhost:143 STARTTLS) nicht mehr möglich
- Anmeldung nur noch mit generierten Zugangsdaten möglich
Dieser Testablauf wird beim Start von docker compose -f docker-compose.dev.yml up --build automatisch mit dem User testuser2@example.org im Container tests durchgeführt.
Bei Änderungen an der Konfiguration:
docker compose -f docker-compose.dev.yml down --volumes
docker compose -f docker-compose.dev.yml up --buildAlle Docker Volumes müssen entfernt werden (docker compose down --volumes), wenn Konfigurationsänderungen vorgenommen wurden, da sich einige Services sonst nicht korrekt neu initialisieren.