Vaultwarden mit Authentik per OIDC absichern: Single Sign-On für deinen Passwort-Manager. Konfiguration Schritt für Schritt mit Provider-Setup, Bitwarden-Client und 2FA.
💡 Hinweis: Dieses Tutorial setzt voraus, dass du bereits Vaultwarden und Authentik auf deinem Server laufen hast. Beide müssen über HTTPS erreichbar sein.
Einleitung — Warum SSO für Vaultwarden?
Ihr habt Vaultwarden eingerichtet, weil ihr eure Passwörter selbst hosten wollt — die Logik dahinter: Volle Kontrolle, keine fremden Server. Aber Vaultwarden bringt seine eigene Login-Maske mit. Eigene Benutzerverwaltung. Eigene 2FA-Konfiguration. Bei zehn Self-Hosted-Diensten habt ihr zehn Login-Masken zu verwalten.
Wenn ihr Authentik als zentralen Identity Provider laufen habt, könnt ihr Vaultwarden über OpenID Connect (OIDC) dort anbinden. Resultat: Ein Login für Vaultwarden, Gitea, Nextcloud und alle anderen Dienste — gleiche 2FA, gleiche Passwort-Policies, zentrales Audit-Log.
Was diese Integration bringt
- Ein einziger Login für alle Self-Hosted-Dienste
- Zentrale 2FA — In Authentik konfigurieren, gilt automatisch auch für Vaultwarden
- Account-Lifecycle zentral steuern — Mitarbeiter raus, in Authentik deaktivieren, alle Zugänge weg
- Audit-Log — Jeder Login wird in Authentik protokolliert
- Passwort-Reset über Authentik — Vaultwarden muss nicht selbst E-Mails verschicken
⚠️ Wichtig: Vaultwarden ist ein Passwort-Manager. Wenn euer SSO-System (Authentik) ausfällt, kommt ihr nicht mehr an eure Passwörter. Aktiviert SSO_ONLY nicht sofort — lasst den klassischen Login als Fallback aktiv, bis ihr sicher seid, dass alles stabil läuft.
In diesem Guide bauen wir die Verbindung zwischen Authentik und Vaultwarden Schritt für Schritt auf.
Voraussetzungen
- Authentik läuft unter eigener Domain (z.B.
auth.example.com) - Vaultwarden läuft unter eigener Domain (z.B.
vault.example.com) - Beide haben gültige SSL-Zertifikate
- Ihr habt Admin-Zugriff auf beide
Vaultwarden-Version prüfen
OIDC-Support ist in Vaultwarden ab Version 1.34.x stabil verfügbar. Prüfen:
docker exec vaultwarden /vaultwarden --versionFalls eure Version älter ist, vorher updaten — siehe Vaultwarden-Tutorial.
Schritt 1: OAuth2/OIDC-Provider in Authentik anlegen
Loggt euch ins Authentik Admin Interface unter https://auth.example.com ein.
Provider erstellen
- Applications → Providers → Create
- Wählt OAuth2/OpenID Provider
- Konfiguration:
- Name:
vaultwarden-provider - Authorization flow:
default-provider-authorization-implicit-consent - Client type:
Confidential - Client ID: Wird automatisch generiert — gleich kopieren
- Client Secret: Wird automatisch generiert — gleich kopieren
- Redirect URIs / Origins:
https://vault.example.com/identity/connect/oidc-signin - Signing Key:
authentik Self-signed Certificate
- Name:
- Advanced Settings aufklappen:
- Subject mode:
Based on the User's Email - Include claims in id_token: aktiviert lassen
- Subject mode:
- Create
⚠️ Wichtig: Die Redirect URI muss exakt so eingetragen werden, wie Vaultwarden sie aufruft. Tippfehler hier sind die häufigste Ursache für „Invalid redirect_uri“-Fehler beim Login.
Application erstellen
Eine Provider ohne Application kann nicht genutzt werden:
- Applications → Applications → Create
- Konfiguration:
- Name:
Vaultwarden - Slug:
vaultwarden - Provider:
vaultwarden-provider(eben angelegt) - Launch URL:
https://vault.example.com - Icon (optional): Vaultwarden-Logo hochladen
- Name:
- Create
Verbindungsdaten merken
Klickt auf den Provider → Tab Overview. Ihr braucht gleich:
Client ID: [aus Provider-Übersicht kopieren]
Client Secret: [aus Provider-Übersicht kopieren]
Issuer URL: https://auth.example.com/application/o/vaultwarden/Schritt 2: Vaultwarden für OIDC konfigurieren
Vaultwarden bekommt seine SSO-Konfiguration über Environment Variables. Wir erweitern eure bestehende docker-compose.yml.
sudo nano /opt/vaultwarden/docker-compose.ymlErgänzt den environment:-Block des Vaultwarden-Service:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com"
# ... eure bestehenden Variablen ...
# SSO-Konfiguration
SSO_ENABLED: "true"
SSO_ONLY: "false"
SSO_AUTHORITY: "https://auth.example.com/application/o/vaultwarden/"
SSO_CLIENT_ID: "EURE_CLIENT_ID_AUS_AUTHENTIK"
SSO_CLIENT_SECRET: "EUER_CLIENT_SECRET_AUS_AUTHENTIK"
SSO_SCOPES: "email profile openid"
SSO_PKCE: "true"
SSO_SIGNUPS_MATCH_EMAIL: "true"
volumes:
- ./data:/data
ports:
- "127.0.0.1:8080:80"Was die Environment Variables bedeuten
| Variable | Bedeutung |
|---|---|
SSO_ENABLED | SSO-Funktion aktivieren |
SSO_ONLY | Wenn true, ist der klassische Login deaktiviert |
SSO_AUTHORITY | OIDC-Issuer-URL (mit Trailing-Slash!) |
SSO_CLIENT_ID | Client ID aus Authentik |
SSO_CLIENT_SECRET | Client Secret aus Authentik |
SSO_SCOPES | Welche User-Daten Vaultwarden anfordert |
SSO_PKCE | Sicherheits-Erweiterung — sollte aktiv sein |
SSO_SIGNUPS_MATCH_EMAIL | Existierende Vaultwarden-User per E-Mail-Match verknüpfen |
💡 Hinweis:
SSO_ONLY: "false"ist der sichere Default. Behaltet den klassischen Login als Backup, bis ihr mehrfach erfolgreich per SSO eingeloggt habt. Erst dann auftrueumstellen.
Vaultwarden neu starten
cd /opt/vaultwarden
sudo docker compose up -dLogs prüfen:
sudo docker compose logs -f vaultwardenBei Configured SSO authority ist alles gut. Falls Fehler erscheinen, prüft die URLs (Trailing-Slash beachten!) und Credentials.
Schritt 3: Login testen
Öffnet https://vault.example.com in einem frischen Browser-Tab (oder Inkognito-Modus, damit alte Sessions nicht stören).
Erstmaliger SSO-Login
- Auf der Login-Seite seht ihr jetzt einen Button Enterprise Single Sign-On
- Klickt darauf
- Es erscheint ein Feld Identifier — gebt eure Organization-ID ein (oder bei privaten Setups eure E-Mail-Adresse)
- Ihr werdet zu
auth.example.comweitergeleitet - Loggt euch dort mit eurem Authentik-Account ein
- Authentik fragt einmalig nach Zustimmung zur Datenfreigabe → Ja
- Zurück bei Vaultwarden — eingeloggt!
✅ Geschafft! Vaultwarden authentifiziert euch jetzt über Authentik. 2FA, Passwort-Policies und Account-Verwaltung läuft zentral.
Schritt 4: Bitwarden-Clients konfigurieren
Mobile Apps und Browser-Extensions müssen wissen, dass sie SSO nutzen sollen.
Mobile App (iOS / Android)
- App öffnen → Anmelden
- Server-URL auf
https://vault.example.comsetzen - Mit Single Sign-On anmelden wählen
- Identifier eingeben — gleiche wie im Browser
- SSO-Flow wie oben
Browser-Extension
- Extension öffnen → unten Anmelden
- Region: Selbst gehostet → eure Domain eintragen
- Mit SSO anmelden wählen
- Identifier → SSO-Flow
Desktop-App
Identisch mit der Mobile-App — Server-URL setzen, dann SSO wählen.
💡 Tipp: Ein guter Identifier ist eure E-Mail-Domain (z.B.
example.com). Damit findet Vaultwarden direkt den richtigen Authentik-Tenant. Bei Multi-Org-Setups nutzt ihr unterschiedliche Identifier pro Org.
Schritt 5: 2FA über Authentik nutzen
Wenn ihr in Authentik bereits MFA-Stages konfiguriert habt (siehe Authentik-Tutorial), greift die 2FA automatisch beim SSO-Login von Vaultwarden.
Vaultwarden-eigene 2FA deaktivieren
Wenn 2FA jetzt zentral über Authentik läuft, ist die Vaultwarden-eigene 2FA überflüssig. Pro Benutzer in Vaultwarden:
- Account-Settings → Two-step Login → Manage → bestehende 2FA-Provider deaktivieren
⚠️ Wichtig: Deaktiviert Vaultwarden-2FA erst, nachdem ihr mehrfach erfolgreich per SSO mit Authentik-2FA eingeloggt habt. Sonst sperrt ihr euch im Worst Case selbst aus.
Schritt 6: Bestehende Vaultwarden-Accounts migrieren
Wenn ihr Vaultwarden schon länger nutzt, habt ihr Accounts mit klassischen Passwörtern. Diese müssen nicht neu angelegt werden — Vaultwarden mappt sie über die E-Mail-Adresse.
Automatisches Matching aktivieren
Das machen wir bereits mit SSO_SIGNUPS_MATCH_EMAIL: "true". Wichtig:
- In Authentik muss der User dieselbe E-Mail haben wie im bestehenden Vaultwarden-Account
- Wenn ihr Authentik-User aus Active Directory / LDAP synct, prüft, ob die E-Mails korrekt übernommen werden
Erster SSO-Login eines Bestands-Users
- User loggt sich klassisch in Vaultwarden aus
- User klickt Enterprise Single Sign-On
- SSO-Flow → Authentik
- Vaultwarden erkennt die E-Mail und verknüpft den bestehenden Account
Ab jetzt geht beides — SSO und klassischer Login mit dem alten Passwort. Sobald ihr SSO_ONLY: "true" setzt, geht nur noch SSO.
SSO_ONLY aktivieren — der Punkt der Wahrheit
Wenn alle Nutzer mehrfach erfolgreich per SSO eingeloggt waren:
sudo nano /opt/vaultwarden/docker-compose.ymlSSO_ONLY: "true"Vaultwarden neu starten:
cd /opt/vaultwarden
sudo docker compose up -dAb jetzt geht der klassische Login nicht mehr. Alle Nutzer müssen SSO verwenden.
⚠️ Best Practice: Bevor ihr
SSO_ONLYaktiviert, dokumentiert den Notfall-Plan: Wie kommt ihr an eure Passwörter, wenn Authentik mal nicht erreichbar ist? Empfehlung: Mindestens ein Notfall-Account, dessen Master-Passwort ihr offline (z.B. in einem Safe) hinterlegt habt.
Troubleshooting
„Invalid redirect_uri“
- In Authentik Provider → Redirect URIs prüfen
- Muss exakt
https://vault.example.com/identity/connect/oidc-signinsein - Trailing-Slash beachten (oder weglassen — beides muss konsistent sein)
„SSO_AUTHORITY not reachable“
docker exec vaultwarden curl -sI https://auth.example.com/application/o/vaultwarden/.well-known/openid-configuration- Liefert das
HTTP/2 200? Falls nicht: Authentik-Server-Erreichbarkeit prüfen - Container kann externe DNS auflösen?
docker exec vaultwarden nslookup auth.example.com
„User does not exist“
SSO_SIGNUPS_MATCH_EMAIL: "true" ist gesetzt? Plus: User in Authentik hat die korrekte E-Mail-Adresse hinterlegt?
In Authentik: Directory → Users → [User] → Tab "Profile" → "E-mail"„Token validation failed“
SSO_PKCE: "true"und in AuthentikClient type: Confidential— beide Settings müssen stimmen- Authentik Worker läuft?
docker compose logs authentik-worker
Login funktioniert, aber Bitwarden Mobile App akzeptiert SSO nicht
- App-Version aktuell? Bitwarden hat SSO-Bugs in alten Versionen
- In Authentik Subject mode auf
Based on the User's Emailgesetzt?
„Account already exists“
Tritt auf, wenn ein User per E-Mail nicht eindeutig ist. In Authentik nur einen User pro E-Mail anlegen, dann erneut versuchen.
Zusammenfassung & Checkliste
| Schritt | Status |
|---|---|
| Authentik läuft unter eigener Domain | ☐ |
| Vaultwarden läuft unter eigener Domain | ☐ |
| OAuth2-Provider in Authentik angelegt | ☐ |
| Application in Authentik erstellt | ☐ |
| Client ID & Secret kopiert | ☐ |
Vaultwarden docker-compose.yml mit SSO-Variablen erweitert | ☐ |
| Vaultwarden neu gestartet, Logs ohne Fehler | ☐ |
| Erster SSO-Login im Browser erfolgreich | ☐ |
| Bitwarden Mobile App erfolgreich verbunden | ☐ |
| 2FA über Authentik getestet | ☐ |
| Notfall-Account dokumentiert | ☐ |
SSO_ONLY: true aktiviert (nach Test-Phase) | ☐ |
Nächste Schritte
- Authentik mit Gitea verbinden — gleiche Logik, anderer Service
- Authentik Federation — GitHub/Google als Login-Quelle für eure Authentik-User
- Audit-Log auswerten — In Authentik unter Events seht ihr jeden Login
Habt ihr Fragen oder Probleme? Schreibt es in die Kommentare — ich helfe gerne!