
In diesem Tutorial werde ich Ihnen erklären, wie Sie Authentik installieren, Dockerum ein Single-Sign-On-Portal (SSO) für den Zugriff auf Ihre verschiedenen Anwendungen einzurichten.
Mit Authentik können Sie eine einfache, zentralisierte Authentifizierungslösung einrichten, sei es OpenID, SAML oder sogar LDAP. Authentik ermöglicht es zudem, mehrere Identitätsanbieter (IdPs) zu bündeln, um ein einheitliches Portal zu schaffen.
Inhaltsverzeichnis
Einführung in Authentik
Authentik ist eine Open-Source-Lösung für zentralisierte Authentifizierung (SSO) und Identitätsmanagement (IAM), die für moderne Infrastrukturen entwickelt wurde. Authentik wurde in Python entwickelt und verfügt über eine intuitive Weboberfläche. Mit Authentik lässt sich die Verwaltung der Benutzerzugriffe auf verschiedene Anwendungen und Dienste zentralisieren, unabhängig davon, ob diese selbst gehostet werden oder in der Cloud liegen.
Sein größter Vorteil liegt in seiner Flexibilität: Es unterstützt moderne Standards wie OAuth2, OpenID Connect, SAML, LDAP und TOTP, was eine reibungslose Integration mit den meisten gängigen Anwendungen ermöglicht. Authentik kann somit die Rolle eines Identitätsanbieters (IdP) oder eines sicheren Reverse-Proxys übernehmen.
Mit Authentik lassen sich detaillierte Zugriffsrichtlinien definieren, die auf Gruppen, Rollen oder spezifischen Bedingungen basieren. Die Verwaltungsoberfläche bietet ein hohes Maß an Kontrolle über Benutzer, Gruppen, Authentifizierungsabläufe, Anbieter (OAuth/SAML), geschützte Anwendungen usw.
Dank seiner konfigurierbaren Abläufe ermöglicht Authentik die individuelle Anpassung jedes Schritts der Authentifizierung: Kontoerstellung, Anmeldung, Passwortbestätigung oder MFA usw. Dieser modulare Ansatz erleichtert die Umsetzung komplexer Szenarien, ohne den Quellcode ändern zu müssen.
In puncto Sicherheit integriert Authentik nativ die Multi-Faktor-Authentifizierung (MFA), detaillierte Audit-Protokolle, eine feinsteuerbare Berechtigungsverwaltung sowie Kompatibilität mit Reverse-Proxys (wie Traefik oder Nginx) für eine sichere Inbetriebnahme.
Authentik lässt sich sehr einfach über Dockeroder DockerCompose installieren, wodurch es auch für kleine Organisationen zugänglich ist, die die Kontrolle über ihre Anmeldedaten behalten möchten.
Zusammenfassend lässt sich sagen, dass Authentik eine schlanke, moderne und Open-Source-Alternative zu Lösungen wie Keycloak darstellt, die sich besonders für DevOps-Umgebungen, selbst gehostete Labore und Unternehmen eignet, denen ihre digitale Souveränität am Herzen liegt.
Voraussetzungen für die Bereitstellung von Authentik mit Docker
Wir gehen davon aus, dass Sie eine „saubere“ Bereitstellung von Authentik für den Produktivbetrieb durchführen möchten. Dazu benötigen Sie:
- Einen Linux-Server, auf dem undDocker DockerCompose installiert sind
- Ein DNS-Eintrag (auth.domain.tld / sso.domain.tld)
- Ein SSL-Zertifikat, das mit dem Eintrag verwendet werden kann
- Ein Reverse-Proxy
- Einen SMTP-Server zum Versenden von E-Mails
Authentik mit undDocker ComposeDocker bereitstellen
Für diese Bereitstellung stützen wir uns auf die offizielle Dokumentation, die hier verfügbar ist: https://docs.goauthentik.io/docs/install-config/install/docker-compose
Erstellen Sie auf Ihrem Server mitLinux zunächst einen OrdnerDocker, in dem die Dateidocker-compose.yml, die Datei sowie.env die verschiedenen Volumes (Ordnerumleitung) gespeichert werden sollen.
Ich werde meinerseits im Ordner arbeiten/containers/authentik/.
Laden Sie zunächst die von Authentik docker-compose.yml bereitgestellte Datei herunter.
sudo wget https://goauthentik.io/docker-compose.ymlWir fahren nun fort, indem wir der Dokumentation folgen, um die Datei zu erstellen und.env zwei Variablen darin hinzuzufügen.
echo "PG_PASS=$(openssl rand -base64 36 | tr -d '\n')" sudo .env
echo "AUTHENTIK_SECRET_KEY=$(openssl rand -base64 60 | tr -d '\n')" sudo .envBisher haben wir die beiden Dateien erstellt; nun fügen wir Variablen in die Datei .envzur Konfiguration von Authentik ein.
Zunächst öffnen wir die Datei:
sudo nano .envZunächst konfigurieren wir das TAG des Images:
AUTHENTIK_TAG=2025.6Bei meiner Bereitstellung musste ich diese Änderung vornehmen, da die Datei `docker-compose.yml` mir ein Image vorschlug, das noch nicht verfügbar war, sodass eine Bereitstellung von Authentik nicht möglich war.
Die Liste der verfügbaren TAGs finden Sie hier: https://github.com/goauthentik/authentik/pkgs/container/server
Um die Konfiguration fortzusetzen, fügen wir nun die SMTP-Einstellungen für den E-Mail-Versand hinzu. Fügen Sie die folgenden Zeilen ein und passen Sie sie an Ihre Umgebung an:
# SMTP Host Emails are sent to
AUTHENTIK_EMAIL__HOST=smtp.domain.tld
AUTHENTIK_EMAIL__PORT=25
# Optionally authenticate (don't add quotation marks to your password)
#AUTHENTIK_EMAIL__USERNAME=
#AUTHENTIK_EMAIL__PASSWORD=
# Use StartTLS
#AUTHENTIK_EMAIL__USE_TLS=false
# Use SSL
#AUTHENTIK_EMAIL__USE_SSL=false
#AUTHENTIK_EMAIL__TIMEOUT=10
# Email address authentik will send from, should have a correct @domain
[email protected]Passen Sie die Veröffentlichungsports der Anwendung an:
COMPOSE_PORT_HTTP=80
COMPOSE_PORT_HTTPS=443Um diese Konfiguration abzuschließen, geben wir nun die Parameter für die Erstellung des Standardkontos ein: akadmin
AUTHENTIK_BOOTSTRAP_PASSWORD=changeme
AUTHENTIK_BOOTSTRAP_TOKEN=changeme
[email protected]Passen Sie auch hier die Einstellungen an Ihre Umgebung an, indem Sie die E-Mail-Adresse ändern und ein sicheres Passwort sowie ein starkes Token festlegen.
Die Datei .envist konfiguriert, wir gehen nun zur Datei überdocker-compose.yml.
sudo nano docker-compose.ymlFür jeden in der Datei `docker-compose.yml` deklarierten Dienst ändern Sie die Volumendeklaration, indem Sie `./` voranstellen, um den Inhalt in einen lokalen Ordner umzuleiten, und entfernen Sie die Volumendeklaration am Ende der Datei
Für den PostgreSQL-Dienst: wirddatabase:/var/lib/postgresql/data zu: ./database:/var/lib/postgresql/data
Wir sind bereit. Beginnen Sie mit dem Herunterladen der Images:
sudo docker compose pull
Starten Sie anschließend die Container:
sudo docker compose up -d
Zeigen Sie die Protokolle an, um sicherzustellen, dass die Container ordnungsgemäß funktionieren:
sudo docker compose logs -f

Bevor wir mit der Konfiguration fortfahren, testen wir die ordnungsgemäße Funktion von Authentik: Geben Sie in einem Webbrowser als Adresse die IP-Adresse Ihres Servers Dockerüber HTTPS auf dem in der Datei definierten Port ein.env. Ignorieren Sie den Zertifikatsfehler; Sie sollten nun zum Anmeldeformular gelangen. Geben Sie die E-Mail-Adresse 1 des Kontos ein undakadmin klicken Sie auf die Schaltfläche „Log in“ 2.

Geben Sie das in der Datei festgelegte Passwort 1 ein und.env klicken Sie auf „Weiter“ 2.

Sie sind nun bei Authentik angemeldet.

Konfiguration von Nginx als Reverse-Proxy
Bevor wir zur Konfiguration von Authentik übergehen, zeige ich Ihnen zunächst die Konfiguration des VirtualHosts für Nginx, um den von Ihnen gewählten DNS-Namen zu verwenden.
Hier ist ein Beispiel für eine Konfigurationsdatei für Nginx unter Verwendung eines SSL-Zertifikats.
# Upstream where your authentik server is hosted.
upstream authentik {
server ip-docker-server:443;
# Improve performance by keeping some connections alive.
keepalive 10;
}
# Upgrade WebSocket if requested, otherwise use keepalive
map $http_upgrade $connection_upgrade_keepalive {
default upgrade;
'' '';
}
server {
# HTTP server config
listen 80;
listen [::]:80;
server_name auth.domain.tld;
# 301 redirect to HTTPS
return 301 https://$host$request_uri;
}
server {
# HTTPS server config
listen 443 ssl;
http2 on;
server_name auth.domain.tld;
# TLS certificates
ssl_certificate /etc/nginx/ssl/domain.tld.cert;
ssl_certificate_key /etc/nginx/ssl/domain.tld.cert;
add_header Strict-Transport-Security "max-age=63072000" always;
access_log /var/log/nginx/auth.domain.tld_access.log;
error_log /var/log/nginx/auth.domain.tld_error.log;
# Proxy site
# Location can be set to a subpath if desired, see documentation linked below:
# https://goauthentik.io/docs/installation/configuration#authentik_web__path
location / {
proxy_pass https://authentik;
proxy_ssl_verify off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade_keepalive;
}
}Passen Sie die Konfigurationsdatei an Ihre Umgebung an, indem Sie die IP-Adresse des Authentik-Servers in den entsprechenden Abschnitt eintragen
upstream, die Variable ändern undserver_nameden Pfad zu den SSL-Zertifikaten anpassen.
Falls Sie Certbot zur Erstellung des SSL-Zertifikats verwenden, nehmen Sie das obige Beispiel, entfernen Sie den Block , konfigurierenserver{ ... } Sie den Port 80, entfernen Sie im Block 443 den SSL-Teil, ändern Sie den Port von 443 auf 80 und entfernen Sie http2 on;
Erste Schritte mit Authentik
Um dieses erste Tutorial zu Authentik fortzusetzen, sehen wir uns an, wie man einen Benutzer in der Anwendung anlegt und anschließend eine erste Anwendung konfiguriert, die den IdP nutzt.
Um auf die Konfiguration von Authentik zuzugreifen, klicken Sie nach der Anmeldung mit dem Konto „akadmin“ auf „Verwaltungsoberfläche“ 1.

Sie gelangen in den Bereich „IdP-Verwaltung“, wo Sie Zugriff auf die Konfiguration, Protokolle und Statistiken haben.

Einen Benutzer in Authentik anlegen
Es gibt verschiedene Möglichkeiten, Benutzer in Authentik zu verwalten. Wir beginnen mit der grundlegenden Vorgehensweise, bei der ein neuer Benutzer direkt im IdP angelegt wird.
Öffnen Sie in der Verwaltung das Menü „Verzeichnis“ 1 und klicken Sie auf „Benutzer“ 2.

Wechseln Sie in den Ordner 1, in dem Sie den Benutzer anlegen möchten, und klicken Sie dann auf die Schaltfläche „Anlegen“ 2.

Geben Sie den Benutzernamen 1 ein, der gleichzeitig die Anmelde-ID ist, den Namen 2, belassen Sie den Benutzertyp auf „Intern“ 3, geben Sie die E-Mail-Adresse 4 ein und klicken Sie dann auf „Erstellen“ 5.

Der Benutzer wurde angelegt. Nun richten wir das Passwort für das Konto ein. Klicken Sie darauf 1.

Klicken Sie auf der Benutzerseite auf die Schaltfläche „Passwort festlegen“ 1.

Geben Sie das Passwort 1 ein und klicken Sie anschließend auf die Schaltfläche „Passwort aktualisieren“ 2.

Das Passwort des Benutzers ist nun festgelegt.
Einen OpenID-Provider und eine Anwendung einrichten
Zum Abschluss dieses ersten Tutorials zu Authentik sehen wir uns an, wie man einen OpenID-Provider hinzufügt, um Benutzer in einer Anwendung zu authentifizieren.
Um Ihnen die Funktionsweise zu veranschaulichen, werde ich keine echte Anwendung verwenden, sondern einen Container, mit dem sich ein IDP namens „id-oidc-tester“ testen lässt.
Hier ist die Datei „docker-compose.yml“:
name: openid-tester
services:
idp-oidc-tester:
container_name: oidc-tester
environment:
EXTERNAL_OWN_URL: "http://A.B.C.D:8080"
ports:
- 8080:80
image: registry.gitlab.com/guenoledc-perso/idp-oidc-tester:latest
Rufen Sie zunächst die Callback-URL Ihrer Anwendung auf OpenID-Tester ab; diese finden Sie im Bereich „Konfiguration“.

Öffnen Sie im Menü den Punkt „Anwendungen“ 1 und klicken Sie dann auf „Anbieter“ 2.

Klicken Sie auf der Seite „Provider“ auf „Erstellen“ 1.

Zunächst müssen Sie den Typ des Anbieters auswählen, den Sie konfigurieren möchten. In diesem Tutorial erstellen wir einen OpenID-Anbieter. Klicken Sie auf „OAuth2/OpenID Provider“ 1, um ihn auszuwählen, und klicken Sie dann auf die Schaltfläche „Weiter“ 2.

Wir überspringen die Konfiguration des Anbieters, beginnen mit der Benennung 1, wählen anschließend den Autorisierungsablauf* 2 aus, als Client-Typ „Vertraulich“ 3 wählen, in einem Notizblock das Feld „Client-ID“ 4 und „Client-Secret“ 5 kopieren, anschließend die Callback-URL 6 angeben und auf „Fertigstellen“ 7 klicken, um den Provider zu erstellen.

Je nach ausgewähltem Typ verlangt der Autorisierungsablauf entweder (Explicit) oder nicht (Implicit) die Übermittlung von Informationen (E-Mail, Nachname, Vorname …) an die Anwendung, mit der eine Verbindung hergestellt wird.
Verwenden Sie bei einer internen Anwendung „Implicit“, bei einer externen Anwendung (SaaS) lassen Sie „Explicit“ aktiviert, um den Nutzer darüber zu informieren, dass personenbezogene Daten übertragen werden.
Der Anbieter ist angelegt.

Nun geht es weiter mit der Erstellung der Anwendung: Klicken Sie im Navigationsmenü auf „Anwendungen“ 1 und anschließend auf der Seite, auf der diese aufgelistet sind, auf „Erstellen“ 2.

Geben Sie den Namen der Anwendung 1 und anschließend den Slug 2 ein, wählen Sie den zuvor erstellten Anbieter 3 aus und klicken Sie auf die Schaltfläche „Erstellen“ 4.

Die Anwendung ist erstellt. Klicken Sie darauf 1, um auf die Informationen zuzugreifen und die für die Konfiguration von OpenID Tester erforderlichen URLs abzurufen.

Auf der rechten Seite finden Sie die verschiedenen URLs, die für die Konfiguration der Anwendung erforderlich sein können. Für OpenID-Tester kopiere ich: OpenID-Konfigurations-URL.

Hier ist die Konfiguration von OpenID-Tester; ich werde nicht ins Detail gehen, da dies keinen Sinn macht.

Wie Sie sehen können, habe ich für den Bereich „Scope“ vorerst nur OpenID konfiguriert.
Um die Authentifizierung zu testen, klicken Sie auf die Schaltfläche „Login“.

Man gelangt auf die Authentifizierungsseite von Authentik. Ich gebe die E-Mail-Adresse 1 des erstellten Benutzers ein und klicke auf die Schaltfläche „Log in“ 1.

Geben Sie das Passwort 1 ein und klicken Sie auf „Weiter“ 2.

Da der Anbieter explizit konfiguriert wurde, müssen die Berechtigungen durch Klicken auf die Schaltfläche „Weiter“ 1 bestätigt werden.

Anschließend wird man, wie unten zu sehen ist, zur Anwendung weitergeleitet, zusammen mit den verschiedenen vom IdP zurückgegebenen Informationen.


Wie man sieht, wurden bislang noch keine Informationen zum Benutzer zurückgegeben, was in einer echten Anwendung nicht viel nützt.
Ich werde den Geltungsbereich der Anwendung ändern, indem ich „Profil“ und „E-Mail“ hinzufüge, die die Anwendung benötigen dürfte.

Wenn ich mich diesmal anmelde, sieht man, dass die Anwendung den Zugriff auf die Profilinformationen und die E-Mail-Adresse anfordert.

In der Anwendung ist diesmal zu sehen, dass die Benutzerinformationen an Openid-Tester übergeben wurden.


Zum Abschluss dieses Tutorials: Wenn sich der Nutzer direkt bei Authentik anmeldet, sieht er auf seiner Startseite die konfigurierten Anwendungen.

Sie wissen nun, wie Sie Authentik bereitstellen undDocker eine Anwendung konfigurieren, die OpenID nutzt.
