Authentication Flows / Authentifizierungsabläufe

Ein Authentication Flow in Keycloak definiert die exakte logische Reihenfolge von Schritten, Abfragen und Bedingungen, die ein Benutzer oder ein System durchlaufen muss, um erfolgreich authentifiziert zu werden. Anstatt nur starr nach „Benutzername und Passwort“ zu fragen, können Sie mit Flows hochflexible Login-Szenarien gestalten (z. B. eine optionale oder erzwungene Zwei-Faktor-Authentifizierung).

Der Aufbau eines Flows: Schritte und Unterabläufe

Ein Flow besteht aus einzelnen Executions (Ausführungsschritten) oder geschachtelten Sub-Flows (Unterabläufen). Jeder dieser Schritte hat eine bestimmte Aufgabe, wie zum Beispiel:

Die Steuerungs-Regeln (Requirements)

Das Verhalten des gesamten Ablaufs wird dadurch bestimmt, wie Sie die Bedingung (Requirement) für jeden einzelnen Schritt festlegen. Es gibt vier Status-Typen:

  1. Required (Erforderlich): Dieser Schritt muss erfolgreich absolviert werden. Schlägt er fehl oder hat der Benutzer ihn nicht eingerichtet (z. B. 2FA), blockiert der Flow. Keycloak fordert den Benutzer dann ggf. auf, den Schritt einzurichten.
  2. Alternative (Alternative): Es müssen nicht alle Schritte erfüllt werden, sondern mindestens einer der als Alternative markierten Schritte auf derselben Ebene.
    Praxisbeispiel: Wenn der Schritt „Cookie“ (bereits eingeloggt) erfolgreich ist, überspringt Keycloak das Passwort-Formular, weil beide als Alternative definiert sind.
  3. Optional (Optional): Der Schritt wird nur ausgeführt, wenn der Benutzer die Methode konfiguriert hat (z. B. wenn er 2FA in seinem Profil aktiviert hat). Wenn nicht, wird der Schritt einfach übersprungen.
  4. Disabled (Deaktiviert): Der Schritt ist komplett ausgeschaltet und wird im Login-Prozess ignoriert.

Best Practice für Administratoren: Flows anpassen

Die standardmäßig mitgelieferten System-Flows (wie der browser-Flow) sollten nicht verändert werden. Wenn Sie den Anmelde-Ablauf anpassen möchten (z. B. um eine Zwei-Faktor-Authentifizierung für visual energy verpflichtend zu machen), gehen Sie wie folgt vor:

  1. Duplizieren (Duplicate): Wählen Sie den bestehenden Standard-Flow aus und klicken Sie auf Action -> Duplicate. Vergeben Sie einen eindeutigen Namen.
  2. Anpassen: In Ihrem kopierten Flow können Sie nun Schritte hinzufügen, löschen oder die Steuerung (z. B. von Optional auf Required) ändern.
  3. Zuweisen (Bind Flow): Damit der neue Ablauf aktiv wird, müssen Sie ihn unter den Realm Settings oder bei den spezifischen Clients als aktiven Flow für den jeweiligen Zweck (z. B. Browser Binding) hinterlegen.