[VS-NfD] Support a trusted reverse-proxy header or mTLS client certificate as an alternative path #215
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#215
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
Some authority environments terminate authentication at the perimeter and
expect the application to trust it. Supporting that avoids forcing an IdP
into an architecture that already solved authentication — but a trusted
header is a loaded gun if it is trusted unconditionally.
Current state
(
apps/api/src/auth/auth.guard.ts,sessions.service.ts) plus PATs; noheader- or certificate-based identity path exists.
Acceptance criteria
explicit switch and an allowlist of trusted peer addresses; a request
arriving from an untrusted peer with the header is rejected and
audited.
configuration, never guessed.
configurable, with the same trust-boundary rules.
trusted peer authenticates; header ignored entirely while the switch
is off; spoofed header alongside a session cookie does not escalate.
docs/architecture/security.mddocuments the trust boundaryunambiguously — this is the section an assessor will read closest.
Out of scope
Terminating TLS in the application, and certificate lifecycle management.
Implemented in PR #283 (commit
4c7f001), merged fast-forward (run 602 green); CD 609 green. Trusted-proxy/mTLS path off unless AUTH_PROXY_HEADER and AUTH_PROXY_TRUSTED_PEERS are both set; peer check against the TCP peer only; header from an untrusted peer rejects the request and is audited (auth.proxy_rejected, catalogue v1.4) even alongside a valid session; a cookie never escalates past the header identity; feature off = header inert. Explicit mapping (username/e-mail, no JIT); mtls-dn maps the configured DN attribute from the terminator-forwarded subject. Trust boundary documented in security.md, the VS-NfD security documentation (section 4) and the hardening guide deploy table. 4 e2e tests cover all four decisions.