Folge-PR zu #115: setzt webauthn_stage auf der Identification-Stage des Passwordless-Flows. Damit bietet der Browser enrollte Passkeys direkt im Autofill des Username-Felds an (Conditional WebAuthn / Passkey-Autofill, seit authentik 2025.12; wir laufen 2026.5.3 — Spalte webauthn_stage_id live verifiziert): ein Tap auf den vorgeschlagenen Passkey, kein Username, kein Passwort.
Verhalten
Mit discoverable Passkey (Google Password Manager immer; Yubikeys je nach Enrollment): Login-Seite → Passkey aus dem Autofill antippen → drin.
Ohne discoverable Credential: Username tippen → regulärer WebAuthn-Prompt (Stage bei Order 20) — unverändertes Fallback, kein Lockout-Risiko.
Details
last_auth_threshold der Passwordless-Validation-Stage: seconds=0 → minutes=5. Ohne das würde die bei Order 20 gebundene Stage direkt nach der Autofill-Validierung ein zweites Mal challengen. Der Threshold-Skip ist session-gebunden (Authentik speichert die letzte Validierung in der Session), eine fremde/frische Session erbt ihn nicht.
Validation-Stage-Entry im Blueprint vor den Identification-Entry gezogen — !KeyOf löst nur bereits verarbeitete Entries auf.
Enrollment-Stage (default-authenticator-webauthn-setup) steht live auf resident_key_requirement: preferred — GPM-Passkeys sind immer discoverable, neue Yubikey-Enrollments werden es bei gesetzter PIN.
Validierung nach Merge
Worker-Log / DB: webauthn_stage_id auf der Stage passkey-passwordless-identification gesetzt
NetBird/HA-Login: Username-Feld schlägt Passkey vor (Browser mit Conditional-Mediation-Support, z.B. Chrome/Android)
Fallback: Username eintippen funktioniert weiterhin
## Was
Folge-PR zu #115: setzt `webauthn_stage` auf der Identification-Stage des Passwordless-Flows. Damit bietet der Browser enrollte Passkeys **direkt im Autofill des Username-Felds** an (Conditional WebAuthn / Passkey-Autofill, seit authentik 2025.12; wir laufen 2026.5.3 — Spalte `webauthn_stage_id` live verifiziert): ein Tap auf den vorgeschlagenen Passkey, kein Username, kein Passwort.
## Verhalten
- **Mit discoverable Passkey** (Google Password Manager immer; Yubikeys je nach Enrollment): Login-Seite → Passkey aus dem Autofill antippen → drin.
- **Ohne discoverable Credential**: Username tippen → regulärer WebAuthn-Prompt (Stage bei Order 20) — unverändertes Fallback, kein Lockout-Risiko.
## Details
- `last_auth_threshold` der Passwordless-Validation-Stage: `seconds=0` → `minutes=5`. Ohne das würde die bei Order 20 gebundene Stage direkt nach der Autofill-Validierung ein zweites Mal challengen. Der Threshold-Skip ist **session-gebunden** (Authentik speichert die letzte Validierung in der Session), eine fremde/frische Session erbt ihn nicht.
- Validation-Stage-Entry im Blueprint vor den Identification-Entry gezogen — `!KeyOf` löst nur bereits verarbeitete Entries auf.
- Enrollment-Stage (`default-authenticator-webauthn-setup`) steht live auf `resident_key_requirement: preferred` — GPM-Passkeys sind immer discoverable, neue Yubikey-Enrollments werden es bei gesetzter PIN.
## Validierung nach Merge
1. Worker-Log / DB: `webauthn_stage_id` auf der Stage `passkey-passwordless-identification` gesetzt
2. NetBird/HA-Login: Username-Feld schlägt Passkey vor (Browser mit Conditional-Mediation-Support, z.B. Chrome/Android)
3. Fallback: Username eintippen funktioniert weiterhin
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Setzt webauthn_stage auf der Identification-Stage des Passwordless-
Flows (Conditional WebAuthn, authentik >= 2025.12): der Browser bietet
enrollte Passkeys direkt im Autofill des Username-Felds an — ein Tap,
kein Username. Username-Tippen bleibt als Fallback für nicht-
discoverable Credentials erhalten.
last_auth_threshold der Passwordless-Validation-Stage von seconds=0
auf minutes=5: verhindert Doppel-Challenge derselben Flow-Ausführung
nach Autofill-Validierung; der Skip ist session-gebunden.
Validation-Stage-Entry vor den Identification-Entry gezogen, weil
!KeyOf nur rückwärts auflöst.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Was
Folge-PR zu #115: setzt
webauthn_stageauf der Identification-Stage des Passwordless-Flows. Damit bietet der Browser enrollte Passkeys direkt im Autofill des Username-Felds an (Conditional WebAuthn / Passkey-Autofill, seit authentik 2025.12; wir laufen 2026.5.3 — Spaltewebauthn_stage_idlive verifiziert): ein Tap auf den vorgeschlagenen Passkey, kein Username, kein Passwort.Verhalten
Details
last_auth_thresholdder Passwordless-Validation-Stage:seconds=0→minutes=5. Ohne das würde die bei Order 20 gebundene Stage direkt nach der Autofill-Validierung ein zweites Mal challengen. Der Threshold-Skip ist session-gebunden (Authentik speichert die letzte Validierung in der Session), eine fremde/frische Session erbt ihn nicht.!KeyOflöst nur bereits verarbeitete Entries auf.default-authenticator-webauthn-setup) steht live aufresident_key_requirement: preferred— GPM-Passkeys sind immer discoverable, neue Yubikey-Enrollments werden es bei gesetzter PIN.Validierung nach Merge
webauthn_stage_idauf der Stagepasskey-passwordless-identificationgesetzt🤖 Generated with Claude Code