Push-Authentifizierung ist eine komfortable und sichere Methode der Multi-Faktor-Authentifizierung (MFA). Doch eine Standardisierung einer PUSH-Authentifizierung existiert nicht, weshalb Anbieter jeweils proprietäre Schnittstellen bereitstellen. Keycloak bietet von Haus aus keine native Unterstützung für eine 2FA-App mit Push-Authentifizierung, sodass eine individuelle Lösung erforderlich ist.
Die Herausforderung: Eine dritte Komponente ist notwendig
Ein wichtiger Aspekt bei Push-Authentifizierung ist, dass die Authentifizierungsanfrage nicht direkt an die App gesendet wird. Stattdessen ist die App mit einem Mediator (meist ein Identitätsprovider, IDP) verknüpft. Die Authentifizierungsanfrage wird an diesen Mediator gesendet, der sie dann an die App weiterleitet.
Der Grund dafür ist, dass die App eine Client-Komponente ist und daher nicht direkt angesprochen werden kann. Sie initiiert selbst Anfragen (Pull-Prinzip), um zu prüfen, ob eine Authentifizierungsanfrage vorliegt. Der Ort, an dem die App diese Information abrufen kann, ist die Mittlerkomponente – also der Mediator. Daher wird die Authentifizierungsanfrage von der Anwendung immer an diesen Mediator gesendet, der sie dann der App bereitstellt.

Ein Beispiel ist der Microsoft Authenticator, der über Entra ID (ehemals Azure AD) arbeitet. Hier könnte man eine Anfrage an die Graph API senden, die dann die Authentifizierung in der App auslöst.
Das macht Push-Authentifizierung komplexer als OTP (One-Time Password), da OTP direkt in den Apps ohne eine zwischengeschaltete Mediator-Komponente genutzt werden kann.
Umsetzung in Keycloak
Da die Authentifizierungsanfrage immer über einen Mediator läuft, muss Keycloak eine Verbindung zu dieser Mediator-Schnittstelle herstellen. Dies erfordert eine Anpassung über die Service Provider Interfaces (SPI) von Keycloak. Entwickler müssen also:
- Die Schnittstelle des Mediator analysieren und verstehen
- Eine Implementierung in Keycloak per SPI erstellen
- Wartung der Komponente sicherstellen, da sich sowohl die SPI- als auch die Mediator-Schnittstellen ändern können
Dies ist ein erheblicher Entwicklungsaufwand und setzt fundierte Kenntnisse in Keycloak-Entwicklung voraus. Bisher ist uns keine frei verfügbare Implementierung für eine Authentifizierungsapp bekannt, die dies bereits umsetzt.
Gibt es bestehende Lösungen?
Leider gibt es derzeit keine kostenfreie Out-of-the-Box-Lösung für Push-Authentifizierung in Keycloak. Der Markt für kommerzielle Lösungen ist ebenfalls begrenzt. Aktuell bietet nur ein Anbieter, SecSign Technologies, ein Plugin für seine 2FA-App an, das Push-Authentifizierung mit Keycloak ermöglicht.
Alternative: Delegation an einen externen IDP
Ein alternativer Ansatz ist die Delegation der Authentifizierung an einen externen IDP, der Push-Authentifizierung unterstützt. Dies könnte über SAML oder OIDC erfolgen, um Keycloak an Entra ID oder einen anderen IDP anzubinden.

Vorteile:
- Kein eigener Entwicklungsaufwand oder Plugins erforderlich
- Schnelle Implementierung
Nachteile:
- Abhängigkeit von einem externen IDP
- Erhöhter Wartungs- und Konfigurationsaufwand
- Synchronisation der Nutzerentitäten notwendig (Provisionierung)
- Keycloak verliert Kontrolle über den Authentifizierungsprozess
- Höhere Latenz durch Weiterleitung
- Lizenzkosten für den externen IDP
Fazit
Eine native Push-Authentifizierung in Keycloak ist nicht einfach zu realisieren und erfordert eine proprietäre Mediator-Integration über SPI. Ohne eine bestehende Lösung bleibt nur die Eigenentwicklung oder eine kommerzielle Lösung wie SecSign. Alternativ kann die Authentifizierung an einen externen IDP delegiert werden, was jedoch mit eigenen Herausforderungen verbunden ist. Wer eine Push-Authentifizierung mit Keycloak benötigt, muss also entweder mit erheblichem Aufwand eine eigene Lösung entwickeln oder eine kommerzielle Option in Betracht ziehen.
