M18-8: Operator auth via Authelia #169
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks#169
Loading…
Add table
Add a link
Reference in a new issue
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?
As an operator, I want the new UI and all mutating endpoints fronted by the existing Authelia instance (the same auth layer Forgejo already sits behind), so that the architect (which has host filesystem access and can dispatch any agent) is protected without rolling a homegrown token scheme.
Acceptance criteria
Proxy topology
claude.jacquin.app) points at192.168.1.164:4500Remote-User/Remote-Groupsheaders set by Authelia are trusted by the server via a configuredtrust_proxyCIDR list; requests from outside that list have the headers strippedServer-side gating
apps/serverextractsRemote-Userfrom the trusted proxy and attaches it to the request context asreq.user/architect/*route plus mutating/agents/*,/task,/cancel,/breakdownrequirereq.userto match the configuredoperator_user/health,/events,/history,/queue,/stats,/usage,/storage,/agents(GET only) remain readable on LAN without Authelia — the monitor SSE needs them and they expose no secretsconfig/agents.json::authblock:{ "operator_user": "charles", "trust_proxy": ["10.0.0.0/24"] }. Startup refuses to boot iftrust_proxyis empty when any mutating route is wiredUI
/app/*unauthenticated redirects to Authelia and backGET /whoamithat echoesreq.user)agents.json)Docs
operator_user+trust_proxyinagents.jsoncurl -H 'Remote-User: charles' …from trusted proxy IP succeeds; from outside 403s)Tests
Remote-Useris missing or mismatched; accept when it matchesoperator_userRemote-Userheader from an untrusted origin are ignored (treated as unauthed)Out of scope
Dependencies
References
specs/m18-ui-rewrite-and-architect.md§Story M18-8