chore(release): v0.6.0
WebAuthn/YubiKey as an optional login 2nd factor (web-auth/webauthn-lib), gated on domain+HTTPS. TOTP + backup codes stay the required 2FA. Register/use/remove keys in Settings + at the challenge; 2FA reset (UI + CLI) clears keys. Real YubiKey end-to-end is browser-verified on a domain host. See CHANGELOG. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>feat/v1-foundation v0.6.0
parent
2b04a18023
commit
5ae0b7d135
23
CHANGELOG.md
23
CHANGELOG.md
|
|
@ -13,6 +13,29 @@ getaggte Releases (Kanal `stable`, optional `beta`) — niemals Entwicklungs-Bui
|
|||
|
||||
_Keine offenen Änderungen — der nächste Stand wird hier gesammelt und als `vX.Y.Z` getaggt._
|
||||
|
||||
## [0.6.0] - 2026-06-14
|
||||
|
||||
### Hinzugefügt
|
||||
- **WebAuthn / Security-Keys (YubiKey) als optionaler 2. Login-Faktor.** Per
|
||||
`web-auth/webauthn-lib`. TOTP + Backup-Codes bleiben der erforderliche 2FA und die einzige
|
||||
Wiederherstellung; ein Security-Key ist eine zusätzliche Login-Option.
|
||||
- **Gated auf Domain + HTTPS:** Die rpId ist die aktive Domain — auf Bare-IP/HTTP ist die
|
||||
Funktion ausgeblendet (mit Hinweis), da eine IP keine gültige rpId ist.
|
||||
- **Einstellungen → Sicherheit:** Security-Keys hinzufügen (benannt), auflisten, entfernen
|
||||
(mit Bestätigung). Beim Login-2FA-Schritt „Mit Security-Key anmelden" neben TOTP/Backup-Code.
|
||||
- 2FA deaktivieren (UI **und** `clusev:reset-admin --disable-2fa`) entfernt jetzt auch
|
||||
Security-Keys + Backup-Codes, damit ein Reset den zweiten Faktor vollständig zurücksetzt.
|
||||
|
||||
### Sicherheit
|
||||
- rpId strikt = aktive Domain (nie eine IP). Challenges serverseitig + einmalig.
|
||||
- Signatur-Zähler-Prüfung mit Rollback-/Klon-Erkennung; Zähler 0 nur toleriert, wenn der
|
||||
gespeicherte Zähler ebenfalls 0 ist (Plattform-Authenticator/Passkeys).
|
||||
- Registrierung erfordert eine aktive 2FA-Anmeldung; Label wird vor der Browser-Ceremony
|
||||
validiert (keine verwaisten Credentials). Alle Aktionen im Audit-Log.
|
||||
|
||||
> Hinweis: Der echte End-to-End-Test (YubiKey registrieren + anmelden) ist nur unter einer Domain
|
||||
> mit HTTPS möglich; die Ceremony-Logik ist auf Options-/Speicher-/Gating-Ebene getestet.
|
||||
|
||||
## [0.5.0] - 2026-06-14
|
||||
|
||||
### Hinzugefügt
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
return [
|
||||
// First tagged release is v0.1.0 (semantic, not -dev). The live build hash
|
||||
// is resolved from .git at runtime (see App\Livewire\Versions\Index).
|
||||
'version' => '0.5.0',
|
||||
'version' => '0.6.0',
|
||||
|
||||
// Default user channel. Only 'stable' and 'beta' are ever offered to users.
|
||||
'channel' => 'stable',
|
||||
|
|
|
|||
|
|
@ -25,6 +25,13 @@ original foundational decisions doc (do not overwrite it).
|
|||
- `v0.4.4` — stop iOS zoom-on-focus: one unlayered `@media (pointer: coarse)` rule in `app.css`
|
||||
forces 16px on `input`/`textarea`/`select` on touch devices (phone + tablet any size), desktop
|
||||
sizing unchanged.
|
||||
- `v0.6.0` — **WebAuthn / YubiKey** as an optional login 2nd factor (`web-auth/webauthn-lib`),
|
||||
gated on domain+HTTPS (rpId = active domain; hidden on bare-IP). TOTP + backup codes stay the
|
||||
required 2FA. Register/list/remove keys in Settings → Security; use a key at the login
|
||||
challenge. **DEFERRED MANUAL CHECK:** real YubiKey register + login is browser-verifiable only
|
||||
on a domain+HTTPS host (the IP rpId is invalid here) — the ceremony code is unit-tested at the
|
||||
option/storage/gating level + Codex-clean, but the end-to-end crypto is unverified until tested
|
||||
on a domain.
|
||||
- `v0.5.0` — **account recovery** (spec/plan in `docs/superpowers/`): 2FA backup codes
|
||||
(encrypted, shown once + downloadable + regenerable, usable at the login challenge),
|
||||
forgot-password via 2FA/backup code (email-link path gated on a configured mailer), and a
|
||||
|
|
|
|||
Loading…
Reference in New Issue