Mit Hilfe der OAuth2 Erweiterung für Benno MailArchiv kann eine Anmeldung per OAuth2 / OIDC gegen einen zentralen Indentity Provider (z.B. Google, Microsoft Azure oder Keycloak in eigenen Installationen) durchgeführt werden.
Der IDP bietet in der Regel auch eine einfache Konfiguration einer 2-Faktor Authentisierung.
Zur Aktivierung von OAuth2 wird das Paket benno-oauth2 benötigt.
apt install benno-oauth2
Das Paket installiert neben den benötigten Programmdateien Konfigurationsdateien im Verzeichnis /etc/benno-oauth2/
. Hier wird die Anbindung an den IDP konfiguriert sowie das Mapping von Containern zum OAuth2 Issuer der User eingestellt.
In der Konfigurationsdatei /etc/benno-oauth2/idpClient.yml
wird für den entsprechenden IDP-Provider im Attribut redirectURI der aus dem Internet erreichbare Hostname des Benno MailArchiv Systems eingetragen. Die Redirect-URI muss anschließend beim IDP in der Client-Registrierung gespeichert werden.
Im entsprechenden Interface des IDPs muss die Benno MailArchiv Installatio als Client registriert werden. Die Konfiguration von OAuth2-Clients ist in der Dokumentation des jeweiligen IDPs zu entnehmen.
Nach Einrichtung des Clients können hier die benötigten Verbindungsdaten wie clientID und clientSecret ausgelesen werden. Diese werden dann in der Konfigurationsdatei /etc/benno-oauth2/idpClients.yml
in die entsprechenden Attribute eingetragen. Die anderen Einträge in der Konfigurationsdatei müssen in der Regel nicht angepasst werden.
Die Anmeldung per OAuth2 an Benno MailArchiv erfolgt über den Link https://<benno-mailarchiv-hostname>//benno/oauth2/login?idp-client=<name-idp>. Hier wird <name-idp> durch den Namen der IDP-Konfiguration unter clients: ersetzt (Bsp. azure-idp, google-idp, keycloak-idp).
Falls die Datei /etc/benno-oauth2/assets/login.tpl
existiert, wird der Inhalt dieser Datei in die Loginseite von Benno Web eingeblendet. Diese Datei sollte ein Smarty Template Snippet analog zu den tpl-Dateien in /usr/share/benno-oauth2/*.tpl
sein. Für Standard-Konfigurationen kann ein ensprechender Symlink erstellt werden.
Beispiel Google Login:
ln -s /usr/share/benno-oauth2/google-login.tpl /etc/benno-oauth2/assets/login.tpl ln -s /usr/share/benno-oauth2/google-logo.svg /etc/benno-oauth2/assets/google-logo.svg
Das Contianer-Mapping wird durch das automatisch installiert AUTH-Script /etc/benno-web/auth.d/10_oauth2_containermapping
implementiert. Dieses liest die Datei /etc/benno-oauth2/issuer.map
und gibt den Container anhand der Issuer-ID des Accesstoken zurück.
Per Default wird für jeden User der Standard-Container BennoContainer gesetzt.
Falls Benno MailArchiv als Multi-Mandanten System betrieben wird, muss die Zeile „* BennoContainer“ entfernt werden und die Issuer-Container Informationen konfiguriert werden.
Das AUTH-Script implementiert das Benno Authentisierungs-Protokoll und kann daher einfach durch eigens angepasste Scripte ersetzt oder erweitert werden.