2FA Auth Pilot
2FA Auth Pilot fügt Ihrem WordPress-Login eine zusätzliche Sicherheitsschicht hinzu, indem nach Benutzername und Passwort ein zweiter Verifizierungsschritt verlangt wird. Das Plugin implementiert den Industriestandard Time-based One-Time Password (TOTP) (RFC 6238) und arbeitet mit jeder kompatiblen Authenticator-App zusammen — darunter Google Authenticator, Microsoft Authenticator, Authy, 1Password und Duo.
Selbst wenn ein Passwort gestohlen, abgephisht oder mehrfach verwendet wurde, kann ein Angreifer den Login ohne den auf dem Gerät des Benutzers erzeugten Einmalcode nicht abschließen. Administratoren können 2FA rollenbezogen verlangen, eine Übergangsfrist für die Einrichtung festlegen und vertrauenswürdige IP-Bereiche von der zweiten Faktor-Prüfung ausnehmen.

Highlights
- TOTP-Authentifizierung kompatibel mit jeder RFC-6238-Authenticator-App (Google Authenticator, Microsoft Authenticator, Authy, 1Password, Duo, FreeOTP, …).
- E-Mail-OTP-Fallback, der einen sechsstelligen Verifizierungscode per E-Mail sendet, falls die Authenticator-App nicht verfügbar ist.
- Wiederherstellungscodes: 5 bis 20 einmalige Backup-Codes, die bei der Einrichtung erzeugt werden und Notfallzugriff ermöglichen.
- Rollenbasierte Durchsetzung: jede WordPress-Rolle lässt sich auf Erforderlich, Optional oder Deaktiviert stellen.
- Übergangsfrist von bis zu 90 Tagen für erforderliche Rollen, damit bestehende Nutzer beim Einschalten von 2FA nicht sofort ausgesperrt werden.
- IP-Whitelist mit IPv4- und CIDR-Notation, um die 2FA-Abfrage aus vertrauenswürdigen Netzen (Büro, VPN, Monitoring) zu überspringen.
- Vertrauenswürdige Geräte: die Option Dieses Gerät merken kann die 2FA-Abfrage in einem bestimmten Browser bis zu 365 Tage lang unterdrücken.
- API-Schutz: XML-RPC und die WordPress-REST-API lassen sich hinter 2FA-bewussten Prüfungen sperren.
- QR-Code-Einrichtung mit Fallback auf einen manuellen Schlüssel für Umgebungen, in denen der QR-Code nicht gescannt werden kann.
- Konfigurierbares Zeitfenster (1–4 Intervalle) zum Ausgleich von Uhrenabweichungen zwischen Server und Nutzergerät.
- Saubere Deinstallation entfernt auf Wunsch sämtliche Plugin-Daten beim Löschen des Plugins.
Voraussetzungen
- WordPress 6.0 oder neuer.
- PHP 7.4 oder neuer (PHP 8.x empfohlen).
- Eine korrekte Serveruhr. TOTP basiert auf Zeitsynchronisation; eine Abweichung von mehr als 90 Sekunden führt dazu, dass gültige Codes abgelehnt werden.
- Eine Authenticator-App auf dem Smartphone, Tablet oder im Passwort-Manager jedes Nutzers.
- Für den E-Mail-OTP-Fallback eine funktionierende ausgehende Mail-Konfiguration (das Begleit-Plugin Mail Pilot oder eine beliebige SMTP-Integration genügt).
Installation
- Laden Sie das Plugin-ZIP-Archiv herunter.
- Öffnen Sie im WordPress-Adminbereich Plugins → Installieren → Plugin hochladen.
- Wählen Sie die ZIP-Datei aus und klicken Sie auf Jetzt installieren.
- Klicken Sie auf Plugin aktivieren.
- Öffnen Sie Einstellungen → Zwei-Faktor-Authentifizierung, um mit der Konfiguration zu beginnen.
Nach der Aktivierung ist 2FA standardmäßig global deaktiviert. Kein Nutzer wird in den neuen Login-Flow gezwungen, solange der Administrator die Funktion nicht einschaltet und Rollen zuweist. So wird vermieden, dass beim ersten Rollout versehentlich jemand ausgesperrt wird.
Konfiguration
Alle Einstellungen liegen unter Einstellungen → Zwei-Faktor-Authentifizierung und sind auf vier Tabs verteilt: Allgemein, Rollen, IP-Whitelist und Erweitert.
Allgemein
Der Tab Allgemein steuert, wie sich die 2FA-Abfrage nach der Aktivierung verhält.

| Einstellung | Beschreibung |
|---|---|
| 2FA aktivieren | Hauptschalter. Wenn aus, ist das Plugin inaktiv und keine Login-Abfrage erscheint. |
| Unternehmens- / Herausgebername | Die Bezeichnung, die in der Authenticator-App neben dem Eintrag angezeigt wird. Verwenden Sie den Site- oder Organisationsnamen. |
| Code-Fenster | Anzahl der 30-Sekunden-Intervalle, die rund um die aktuelle Zeit akzeptiert werden. Werte zwischen 1 und 4 sind erlaubt. Ein breiteres Fenster ist toleranter gegenüber Uhrenabweichungen, aber etwas weniger streng. Der Standardwert 1 reicht in der Regel aus. |
| Anzahl der Wiederherstellungscodes | Wie viele einmalige Backup-Codes bei der Einrichtung ausgegeben werden (5–20). Standard ist 10. |
| Gerätespeicher (Tage) | Wie lange das Cookie Dieses Gerät merken gültig ist (0–365). Setzen Sie den Wert auf 0, um die Erkennung vertrauenswürdiger Geräte vollständig zu deaktivieren. |
| E-Mail-OTP-Fallback | Ist die Option aktiv, erscheint im Abfrage-Bildschirm ein Link Code per E-Mail senden. Der Code wird an die Konto-E-Mail-Adresse des Nutzers zugestellt. |
| Übergangsfrist (Tage) | Bei Rollen mit Status Erforderlich: wie viele Tage Nutzer nach dem ersten Login zur Einrichtung haben (0–90). Während der Frist wird ein Hinweisbanner angezeigt. |
Wählen Sie die Übergangsfrist lang genug für Nutzer, die sich nicht täglich anmelden. Sieben bis vierzehn Tage sind ein guter Kompromiss für Mitarbeiter-Sites.
Rollen
Der Tab Rollen weist jeder WordPress-Rolle eine von drei Richtlinien zu:

- Erforderlich — 2FA muss eingerichtet sein. Nach Ablauf der Übergangsfrist wird die Einrichtung beim nächsten Login erzwungen und kann nicht weggeklickt werden.
- Optional — Nutzer können 2FA aus ihrem Profil heraus einrichten, werden aber nie dazu gezwungen.
- Deaktiviert — Der 2FA-Tab im Benutzerprofil ist ausgeblendet und der Login bleibt einfaktorig.
Eine typische gehärtete Konfiguration sieht so aus:
| Rolle | Empfohlene Richtlinie |
|---|---|
| Administrator | Erforderlich |
| Editor | Erforderlich |
| Shop-Manager / Autor | Erforderlich oder Optional |
| Abonnent / Kunde | Optional |
Stellen Sie zuerst Administrator auf Erforderlich und schließen Sie Ihre eigene Einrichtung ab, bevor Sie die Anforderung für andere Rollen anheben. Halten Sie beim Testen immer eine zweite Administrator-Sitzung in einem anderen Browser offen.
IP-Whitelist
Der Tab IP-Whitelist akzeptiert einen Eintrag pro Zeile, wahlweise als Einzeladresse oder in CIDR-Form:
203.0.113.42
198.51.100.0/24
10.0.0.0/8
2001:db8::/32
Anmeldungen aus einer eingetragenen Adresse überspringen die 2FA-Abfrage, durchlaufen aber weiterhin die normale Prüfung von Benutzername und Passwort. Diese Funktion ist für vertrauenswürdige Büro-Netze, Jump Hosts oder Monitoring-Agents gedacht.
Tragen Sie ausschließlich Server-zu-Server-Quellen ein. Whitelisten Sie keine Adressbereiche aus Heim- oder Mobilfunknetzen — diese Adressen rotieren und werden von tausenden unbeteiligten Nutzern geteilt.
Erweitert

Der Tab Erweitert steuert die Integration mit der WordPress-Request-Oberfläche sowie die Datenaufbewahrung:
- XML-RPC schützen — Wenn aktiv, werden Anfragen an
xmlrpc.phpabgewiesen, sofern sie kein gültiges Application Password eines 2FA-eingerichteten Nutzers enthalten. Falls Sie XML-RPC nicht nutzen (die meisten modernen Sites tun das nicht), können Sie den Schutz problemlos eingeschaltet lassen. - REST-API schützen — Authentifizierte REST-Endpunkte prüfen, ob der aufrufende Nutzer 2FA erfüllt hat. Anonyme Endpunkte (etwa der öffentliche Beitragsfeed) bleiben unberührt. Für eine einzelne Capture-Sitzung lässt sich der Schutz durch Löschen der Option
tfa_protect_rest_apiumgehen. - Bei Deinstallation alle Daten löschen — Wenn aktiv, werden beim Entfernen des Plugins über Plugins → Installierte Plugins sämtliche Optionen, Nutzer-Secrets, Wiederherstellungscodes und Geräte-Einträge gelöscht. Lassen Sie diese Option aus, falls Sie das Plugin nur vorübergehend deaktivieren möchten.
Übersetzungen

Der Tab Übersetzungen listet jeden vom Plugin nach außen sichtbaren Text — die Login-Aufforderungen, die Einrichtungs-Hinweise, die „Zu viele Versuche“-Meldungen und den Wiederherstellungsfluss — und erlaubt es, jeden einzelnen pro aktiver Sprache zu überschreiben. Das ist der empfohlene Weg für Tonalitätsanpassungen und markenspezifische Formulierungen; die mitgelieferten .po-Dateien liefern weiterhin die Basisübersetzung, sofern keine Überschreibung gesetzt ist.
Nutzung
Für Administratoren
- Öffnen Sie Einstellungen → Zwei-Faktor-Authentifizierung → Allgemein und aktivieren Sie 2FA global.
- Tragen Sie unter Unternehmens- / Herausgebername den Site-Namen ein, damit Nutzer den Eintrag in ihrer Authenticator-App wiedererkennen.
- Wählen Sie eine Übergangsfrist, die bestehenden Nutzern genug Zeit zur Einrichtung lässt — vierzehn Tage sind ein sicherer Standard.
- Wechseln Sie zum Tab Rollen und setzen Sie Administrator auf Erforderlich.
- Melden Sie sich ab und schließen Sie Ihre eigene Einrichtung über das Benutzerprofil ab. Prüfen Sie, dass die Login-Abfrage erscheint und ein Wiederherstellungscode funktioniert.
- Kehren Sie zum Tab Rollen zurück und aktivieren Sie die Durchsetzung schrittweise für Editor, Shop-Manager und weitere privilegierte Rollen.
- Tragen Sie optional vertrauenswürdige Netze unter IP-Whitelist ein.
- Kommunizieren Sie den Rollout einige Tage vor Ablauf der Übergangsfrist im Team.
Einen ausgesperrten Nutzer zurücksetzen
Wenn ein Nutzer sein Telefon und alle Wiederherstellungscodes verliert:
- Öffnen Sie Benutzer → Alle Benutzer und bearbeiten Sie das betroffene Konto.
- Scrollen Sie zum Abschnitt Zwei-Faktor-Authentifizierung.
- Klicken Sie auf 2FA zurücksetzen. Secret, Wiederherstellungscodes und vertrauenswürdige Geräte des Nutzers werden gelöscht.
- Beim nächsten Login durchläuft der Nutzer wieder den QR-Code-Flow wie bei einer Neueinrichtung.
Nur Administratoren können das 2FA eines anderen Nutzers zurücksetzen. Die Aktion wird im WordPress-Activity-Log festgehalten, sofern ein Audit-Plugin installiert ist.
Für Endnutzer (Einrichtung, Login, Wiederherstellung)
Erstmalige Einrichtung
- Melden Sie sich mit Benutzername und Passwort bei WordPress an.
- Öffnen Sie Benutzer → Profil (oder Howdy → Profil bearbeiten).
- Scrollen Sie zur Karte Zwei-Faktor-Authentifizierung und klicken Sie auf Zwei-Faktor-Authentifizierung aktivieren.
- Installieren Sie eine Authenticator-App auf Ihrem Smartphone, falls noch nicht vorhanden. Empfohlene Apps:
- Google Authenticator (iOS, Android)
- Microsoft Authenticator (iOS, Android)
- Authy (iOS, Android, Desktop)
- 1Password oder Bitwarden (im Passwort-Manager integriert)
- Öffnen Sie die App und wählen Sie Konto hinzufügen → QR-Code scannen.
- Scannen Sie den auf der WordPress-Profilseite angezeigten QR-Code. Falls das Scannen nicht klappt, tippen Sie auf Einrichtungsschlüssel eingeben und übernehmen das Secret unterhalb des QR-Codes manuell.
- Die App beginnt, alle 30 Sekunden einen neuen sechsstelligen Code zu erzeugen. Geben Sie den aktuellen Code im Feld Code prüfen ein und klicken Sie auf Aktivieren.
- WordPress zeigt nun Ihre Wiederherstellungscodes an. Laden Sie diese herunter oder drucken Sie sie aus und bewahren Sie sie sicher auf — etwa in einem Passwort-Manager-Tresor oder einem versiegelten Umschlag. Jeder Code ist einmalig verwendbar.
- Bestätigen Sie, dass Sie die Wiederherstellungscodes gesichert haben. Die Einrichtung ist abgeschlossen.
Täglicher Login
- Geben Sie Benutzername und Passwort wie gewohnt ein.
- Im nächsten Schritt öffnen Sie Ihre Authenticator-App und lesen den aktuellen sechsstelligen Code ab.
- Tippen Sie den Code in das Abfragefeld und klicken Sie auf Bestätigen.
- Optional: Setzen Sie das Häkchen bei Dieses Gerät 30 Tage merken (das Limit hängt von der Einstellung Gerätespeicher des Administrators ab). Tun Sie das nur auf Geräten, die Sie selbst kontrollieren.
- Sie sind angemeldet.
Falls Sie sich vertippen, geben Sie den Code einfach erneut ein — die App zeigt alle 30 Sekunden einen neuen. Wiederholte Fehlversuche lösen irgendwann die standardmäßigen WordPress-Login-Sperren aus.
Einen Wiederherstellungscode verwenden
Wenn Sie Ihr Telefon nicht zur Hand haben:
- Klicken Sie im 2FA-Abfragebildschirm auf Wiederherstellungscode verwenden.
- Tippen Sie einen Ihrer bei der Einrichtung gespeicherten Codes ein. Bindestriche sind optional.
- Nach dem Login öffnen Sie Ihr Profil und klicken auf Wiederherstellungscodes neu erzeugen. Wiederherstellungscodes sind Einmal-Codes; der gerade verwendete ist nun ungültig.
E-Mail-OTP-Fallback
Wenn der Administrator den E-Mail-OTP-Fallback aktiviert hat, sehen Sie im Abfragebildschirm zusätzlich Code per E-Mail senden. Ein Klick darauf liefert einen Einmalcode an Ihre Konto-E-Mail-Adresse, der zehn Minuten gültig ist. Diese Option ist als Notfalllösung gedacht — sie erbt die Sicherheit Ihres Posteingangs und ist deshalb nicht so stark wie ein TOTP-Code.
2FA für Ihr Konto deaktivieren
Wenn Ihre Rolle Optional ist, öffnen Sie Benutzer → Profil, scrollen zum Abschnitt Zwei-Faktor-Authentifizierung und klicken auf Deaktivieren. Bei der Rolle Erforderlich ist diese Schaltfläche ausgeblendet — nur ein Administrator kann Ihre Einrichtung dann zurücksetzen.
FAQ
Welche Authenticator-Apps werden unterstützt? Jede App, die RFC 6238 TOTP mit der Standardperiode von 30 Sekunden und sechsstelligen Codes umsetzt. Dazu zählen Google Authenticator, Microsoft Authenticator, Authy, 1Password, Bitwarden, Duo, FreeOTP und die meisten Hardware-Token mit TOTP-Unterstützung.
Können Nutzer ihr Secret auf ein neues Telefon übertragen? Ja. Apps wie Authy und 1Password synchronisieren das Secret automatisch über alle Geräte. Bei Google Authenticator kann der Nutzer die Konten vom alten Telefon exportieren oder, falls das nicht mehr möglich ist, lässt ein Administrator das Secret zurücksetzen und der Nutzer richtet 2FA neu ein.
Was passiert während der Übergangsfrist? Erforderliche Nutzer sehen auf jeder Admin-Seite ein Hinweisbanner sowie eine Schaltfläche 2FA einrichten in ihrem Profil. Endet die Frist, erzwingt der nächste Login die Einrichtung, bevor der Nutzer ins Dashboard gelangt.
Sind Wiederherstellungscodes mehrfach verwendbar? Nein. Jeder Wiederherstellungscode ist einmalig nutzbar. Sobald ein Code eingelöst wird, ist er ungültig. Nutzer können den gesamten Satz jederzeit aus ihrem Profil neu erzeugen — das setzt den alten Satz außer Kraft.
Kann ich 2FA während einer Migration vorübergehend deaktivieren? Ja. Öffnen Sie Einstellungen → Zwei-Faktor-Authentifizierung → Allgemein und schalten Sie den Hauptschalter aus. Nutzer-Secrets und Wiederherstellungscodes bleiben in der Datenbank erhalten — beim Wieder-Einschalten sind alle bestehenden Einrichtungen wieder aktiv, ohne dass Nutzer sich erneut einrichten müssen.
Funktioniert das Plugin mit WP-CLI? WP-CLI umgeht den Web-Login-Flow und unterliegt nicht der 2FA-Prüfung. Schränken Sie den WP-CLI-Zugang stattdessen auf Betriebssystemebene ein (SSH-Key, sudoers, Jump Host).
Wird XML-RPC wirklich noch genutzt? Die meisten modernen Integrationen sind auf die REST-API oder Application Passwords umgestiegen. Wenn Sie XML-RPC nicht benötigen, lassen Sie den Schutz aktiv oder deaktivieren Sie den Endpunkt direkt auf Webserver-Ebene.
Funktioniert 2FA Auth Pilot parallel zu anderen 2FA-Plugins? Nein. Zwei aktive 2FA-Plugins führen zu doppelten Abfragen und inkonsistentem Zustand. Deaktivieren Sie jedes andere 2FA-Plugin, bevor Sie 2FA Auth Pilot aktivieren.
Werden Hardware-Sicherheitsschlüssel (WebAuthn / FIDO2) unterstützt? Die aktuelle Version konzentriert sich auf TOTP und E-Mail-OTP. Unterstützung für Hardware-Keys steht auf der Roadmap.
Wo werden die Secrets gespeichert? Das TOTP-Secret jedes Nutzers sowie die Hashes der Wiederherstellungscodes liegen in der WordPress-User-Meta-Tabelle in derselben Datenbank wie die übrige Site. Wiederherstellungscodes werden gehasht — der Klartext wird ausschließlich einmalig zum Erzeugungszeitpunkt angezeigt.
Fehlerbehebung
„Ungültiger Code”, obwohl die App den richtigen Wert anzeigt.
Die häufigste Ursache ist eine Uhrenabweichung. TOTP-Codes sind im 30-Sekunden-Raster an die aktuelle Zeit gebunden. Prüfen Sie, dass die Serveruhr per NTP / chrony synchronisiert läuft und dass die Uhr auf dem Telefon auf Automatisch steht. Als kurzfristiger Workaround erhöhen Sie das Code-Fenster in den allgemeinen Einstellungen auf 2 oder 3.
Ein Nutzer hat Telefon und alle Wiederherstellungscodes verloren. Ein Administrator kann das 2FA des Nutzers über Benutzer → Alle Benutzer → Bearbeiten → 2FA zurücksetzen zurücksetzen. Der Nutzer durchläuft beim nächsten Login erneut den QR-Code-Flow. Falls der ausgesperrte Nutzer selbst der einzige Administrator ist, siehe den nächsten Punkt.
Der einzige Administrator ist ausgesperrt. Verbinden Sie sich mit der Datenbank (phpMyAdmin oder WP-CLI) und löschen Sie die entsprechenden User-Meta-Zeilen:
DELETE FROM wp_usermeta
WHERE user_id = <admin-id>
AND meta_key LIKE 'tfa\_auth\_pilot%';Der Administrator kann sich anschließend normal anmelden und 2FA neu einrichten.
Der QR-Code wird nicht angezeigt. Prüfen Sie, dass die PHP-Erweiterung GD aktiv ist. Fehlt GD, fällt das Plugin auf einen Textmodus-Einrichtungsschlüssel zurück — der Nutzer kann das Secret manuell in die Authenticator-App eintippen.
E-Mail-OTP-Nachrichten kommen nicht an. Senden Sie eine Testmail aus Ihrem Transaktions-Mail-Plugin (z. B. Mail Pilot → Test-E-Mail). Schlägt der Test fehl, beheben Sie zuerst die ausgehende Mail-Konfiguration. Die Codes werden zudem im WordPress-Activity-Log protokolliert, sofern ein Audit-Plugin installiert ist.
Die REST-API-Integration liefert plötzlich 401. Wenn REST-API schützen aktiv ist, müssen authentifizierte Aufrufe von einem 2FA-eingerichteten Nutzer kommen. Stellen Sie die Integration auf Application Passwords um, die von einem Nutzer mit erfüllter 2FA-Pflicht ausgegeben wurden.
Der Login ist nach Aktivierung von 2FA langsam. Eine kleine Verzögerung (unter einer Sekunde) ist normal, bedingt durch das Aufbauen der Abfrage und den E-Mail-OTP-Pfad. Längere Verzögerungen deuten meist auf ein Timeout des darunterliegenden Mailservers hin. Deaktivieren Sie den E-Mail-OTP-Fallback vorübergehend, um das auszuschließen.
Cookies vertrauenswürdiger Geräte verschwinden sofort. Geräte werden über ein signiertes, an den Browser gebundenes Cookie identifiziert. Private/Inkognito-Fenster, aggressive Cookie-Cleaner und Content-Blocker entfernen es. Setzen Sie in solchen Umgebungen weniger auf Dieses Gerät merken.
Für alles, was hier nicht abgedeckt ist, wenden Sie sich an den Support — mit folgenden Angaben: WordPress-Version, PHP-Version, aktive Plugins, die exakte Fehlermeldung sowie eine kurze Beschreibung der Schritte, die zum Problem geführt haben.