TYPO3 Logo
Passkeys Frontend Authentication
Options
Give feedback View source How to edit Edit on GitHub Full documentation (single file)

Passkeys Frontend Authentication

  • Introduction
  • Installation
  • Configuration
    • Extension Settings
    • Site Configuration
    • TypoScript Reference
  • Quick Start
  • Usage
    • Login
    • Enrollment
    • Recovery
    • Management
  • Administration
    • Dashboard
    • Enforcement
    • User Management
  • Developer Guide
    • PSR-14 Events
    • Extension Points
    • eID API Reference
  • Security
    • WebAuthn Compliance
    • Threat Model
  • Multi-Site
  • Troubleshooting
  • Architecture Decision Records
    • ADR-001: Depend on nr-passkeys-be as Composer Dependency
    • ADR-002: Both felogin Extension and Standalone Plugin
    • ADR-003: Triple Recovery Mechanisms (Password + Codes + Magic Link)
    • ADR-004: Enrollment Only, No User Registration
    • ADR-005: Site-Configurable RP ID with Storage PID Credential Isolation
    • ADR-006: Dual Enforcement Model (Site + FE Groups, Strictest Wins)
    • ADR-007: Post-Login Enrollment Interstitial via Middleware
    • ADR-008: Credential-ID-to-UID Resolution (Not Username)
    • ADR-009: Vanilla JavaScript for Frontend (No Framework Dependencies)
    • ADR-010: Recovery Codes Hashed with bcrypt
    • ADR-011: Magic Link Recovery Deferred to v0.2
    • ADR-012: Authentication Service Priority 80
  • Changelog
  1. Passkeys Frontend Authentication
  2. Architecture Decision Records
  3. ADR-011: Magic Link Recovery Deferred to v0.2
Give feedback Edit on GitHub

ADR-011: Magic Link Recovery Deferred to v0.2 

Status

Accepted

Date

2026-03-14

Decision-makers

Sebastian Mendel

Context 

The design includes three recovery mechanisms: password fallback, recovery codes, and magic link (email-based one-time login). All three are in scope for the extension, but implementing all in v0.1 would increase the MVP scope significantly.

Magic link specifically requires:

  • Email sending infrastructure (TYPO3 mail configuration)
  • Token generation and secure storage
  • Email template (FluidEmail or custom)
  • Verification endpoint
  • User enumeration prevention on the request endpoint
  • Testing of email delivery in CI

Decision 

Defer magic link to v0.2. Ship v0.1 with password fallback + recovery codes.

v0.1 scope:

  • Password fallback (free, felogin already handles it)
  • Recovery codes (self-contained, no external dependencies)

v0.2 scope:

  • MagicLinkService implementation
  • RecoveryController magic link endpoints
  • FluidEmail template for magic link email
  • MagicLinkRequestedEvent for custom email rendering
  • Site configuration for enabling/disabling magic link

The service interface and event class will be defined in v0.1 (as part of the architecture), but the implementation will be stubbed / throw NotImplementedException.

Consequences 

Positive:

  • Smaller v0.1 scope, faster to ship
  • Password + recovery codes already cover the critical recovery paths
  • v0.2 can focus on polish: magic link + admin dashboard + adoption charts

Negative:

  • Sites that disable password login AND lose recovery codes have no v0.1 fallback
  • Users expecting magic link from day one will be disappointed

Mitigation:

  • Enforced enforcement level (which blocks passwords) should not be used until v0.2 ships magic link. Documentation will warn about this.
  • Recovery codes are prominently presented at enrollment to ensure users save them
  • Admin unlock capability (via admin module) as emergency escape hatch

Alternatives Considered 

Ship all three in v0.1: Would delay the MVP by 1-2 weeks for email template design, mail testing infrastructure, and user enumeration prevention on the request endpoint. The benefit is marginal since password + recovery codes are sufficient for the initial rollout.

  • Previous
  • Next
Reference to the headline

Copy and freely share the link

This link target has no permanent anchor assigned. You can make a pull request on GitHub to suggest an anchor. The link below can be used, but is prone to change if the page gets moved.

Copy this link into your TYPO3 manual.

  • Home
  • Contact
  • Issues
  • Repository

Last rendered: Mar 24, 2026 06:25

© since 2025 by Netresearch DTT GmbH
  • Legal Notice
  • Privacy Policy