[VS-NfD] Add a hard auth.local.enabled = false switch covering every local credential flow
#216
Labels
No Label
area:auth
area:docs
area:export
area:ops
area:storage
area:supply-chain
auth
backend
blocked
collab
deployment
docs
effort:L
effort:M
effort:S
frontend
plugins
qa
vs-nfd
vs-nfd:blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stwaidele/dorfteich#216
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Plan reference:
20-massnahmenplan.md-> P1-1ADR: ADR 0021
Effort: M (2 AT)
Depends on: #214
Context
Delegating authentication only counts if the local path is actually closed
— including the flows people forget: password reset, self-service signup,
personal access tokens and feed tokens. A half-closed local path is worse
than none, because the operating concept then describes something untrue.
Current state
UserIdentity.credential(Argon2id),apps/api/src/auth/; token flows inapps/api/src/auth/auth-tokens.service.ts,apps/api/src/public-api/api-tokens.service.ts(PATs) andapps/api/src/public/feed-tokens.service.ts.api.enabled/mcp.enabledinapps/api/src/settings/instance-settings.service.ts, enforced as 404.Acceptance criteria
e-mail-verification-as-login and any other credential-issuing flow
are unreachable (404/403 consistently with the project's
404/403 policy) — enumerated in the test, not assumed.
stated decision (blocked, or allowed only for IdP-authenticated
users), tested either way.
explicitly — bootstrapping must remain possible without reopening
the local path in normal operation.
accidentally left open (extend the existing enumeration fence).
compromised Site-Admin could flip back — or, if runtime, that
residual risk is documented in #231.
Out of scope
Migrating existing users to the IdP, and deleting stored password hashes.
Implemented in PR #284 (commit
13f0311), merged fast-forward (run 603 green); CD 609 green. AUTH_LOCAL_ENABLED=false answers 404 on every local credential flow (login, signup, verification, resend, password forgot/reset/change) - enforced centrally via the LocalCredentialFlow marker before any session/CSRF logic; an enumeration fence fails when an auth route is neither marked nor on the reviewed allowlist. Deploy-level on purpose: a compromised Site Admin cannot flip it back - R-02 closed in 90-restrisiken.md. Stated decisions tested: sessions/logout keep working, PAT and feed-token issuance stays available to IdP-authenticated users. Bootstrap: setup (or SETUP_ADMIN_* pre-seed) before flipping; boot warning when no sign-in path remains. Hardening guide: planned 1.3 row went live in the 1.2 deploy table incl. the login-404 verification probe; login page hides the local form (methods reports local:false).