feat(identity): inject X-Forwarded-User headers after JWT validation #15

Merged
rock merged 1 commits from feat/p3.4-identity-headers into main 2026-09-08 23:08:42 +00:00
Owner

Closes homelab#9 (P3.4)

Changes

  • New internal/identity package: header injection + anti-spoofing
  • proxy.go: strip spoofed headers on all requests, inject identity after JWT validation

Headers

Header Source When
X-Forwarded-User sub claim Always after JWT
X-Forwarded-Roles roles or permissions claim Always after JWT
X-Acting-Service azp claim Only when azp != sub
X-Auth-Verified literal "true" Always after JWT

Tests

13 tests, 93.9% coverage. Covers: spoofing, service accounts, human users, empty claims, nil values, wildcard, mixed types, precedence.

Closes homelab#9 (P3.4) ## Changes - New `internal/identity` package: header injection + anti-spoofing - `proxy.go`: strip spoofed headers on all requests, inject identity after JWT validation ## Headers | Header | Source | When | |--------|--------|------| | X-Forwarded-User | sub claim | Always after JWT | | X-Forwarded-Roles | roles or permissions claim | Always after JWT | | X-Acting-Service | azp claim | Only when azp != sub | | X-Auth-Verified | literal "true" | Always after JWT | ## Tests 13 tests, 93.9% coverage. Covers: spoofing, service accounts, human users, empty claims, nil values, wildcard, mixed types, precedence.
rock added 1 commit 2026-09-08 23:00:01 +00:00
Strip spoofed identity headers from inbound requests, inject
authenticated identity (sub, roles, azp) after JWT validation.
93.9% test coverage, 13 tests.

Closes homelab#9

Co-authored-by: poimen <[email protected]>
rock merged commit 6f7b850193 into main 2026-09-08 23:08:42 +00:00
rock deleted branch feat/p3.4-identity-headers 2026-09-08 23:08:47 +00:00
Sign in to join this conversation.