mats fd9446632d Add go-auth P3/D6: TOTP 2FA, WebAuthn passkeys, UsersManager
The authenticator-app second factor (D4, plan §5.7): shared RFC 4226/6238
primitive in platform/auth/totp.go (±1 window, monotonic replay floor, §13
RFC vectors), per-user AES-GCM-wrapped secrets under AUTH_TOTP_WRAP_KEY,
hashed one-shot recovery codes, and the password → /totp challenge (or
recovery) → session browser flow with first-login enrollment (otpauth QR via
vendored qrcode-generator, two-code confirm, once-only recovery reveal).
AUTH_REQUIRE_TOTP defaults on; per-challenge throttling (R5). Covered E2E by
internal/oidc/totp_flow_test.go.

Passkeys (D6, plan §5.8): go-auth is its own WebAuthn RP — hand-rolled
CBOR/COSE subset parser (stdlib only), register/login ceremonies with
attestation:none, per-request RP ID + origin derived from the issuer host,
AOF-backed cred:<user>:<credID> store. The /admin UsersManager (invite,
disable, reset password, list/rename/delete passkeys, enroll in-browser) is
session + admin-role gated. WebAuthn vectors + ceremony negatives in
internal/webauthn + webauthn_flow_test.go.

Also: bare-host GET / now redirects to /login (the issuer root otherwise
404s in a browser).

Generated with Codebuff 🤖
Co-Authored-By: Codebuff <noreply@codebuff.com>
2026-09-01 11:42:06 +02:00
2026-07-26 21:53:08 +02:00
2026-07-26 21:53:08 +02:00
2026-07-18 23:28:51 +02:00
2026-08-27 15:50:09 +02:00
2026-08-22 11:05:16 +02:00
2026-07-20 00:15:42 +02:00
2026-07-18 23:28:51 +02:00
2026-07-18 23:28:51 +02:00
2026-07-25 18:13:22 +02:00
2026-08-27 15:50:09 +02:00
mcp
2026-08-22 22:33:18 +02:00
2026-07-03 19:30:32 +02:00
2026-06-29 13:17:43 +02:00
2026-08-27 15:50:09 +02:00
2026-07-26 13:01:07 +02:00
2026-06-28 17:52:49 +02:00
2026-06-29 12:35:32 +02:00
2026-06-28 17:52:49 +02:00
2026-06-28 17:52:49 +02:00
2026-07-03 18:14:28 +02:00
2026-08-27 15:50:09 +02:00
2026-06-28 17:52:49 +02:00
S
Description
No description provided
4.5 MiB
0 Stars 1 Watchers 0 Forks
Languages
Go 99%
Dockerfile 0.5%
Shell 0.4%
Makefile 0.1%