Skip to content

Phase 1: Authenticated web dashboard auth layer (Tailscale-ready) #290

@kai-linux

Description

@kai-linux

Goal

Implement the authentication layer for the operator dashboard, supporting both Tailscale-based auth and shared-secret auth, with proper binding and audit trail integration.

Success Criteria

  • New orchestrator/dashboard/auth.py module with two configurable backends (tailscale, shared_secret)
  • tailscale backend reads Tailscale-User-Login header and validates against dashboard_allowed_users allowlist
  • shared_secret backend validates bearer tokens in Authorization header
  • Read endpoints accessible without auth only when bound to 127.0.0.1
  • Write endpoints always require authentication
  • Bind address configurable (default 127.0.0.1), with validation that non-127.0.0.1 binding requires auth backend
  • All authenticated write actions logged to audit trail with {actor, action, payload, ts}
  • Startup fails if non-127.0.0.1 binding is configured without a valid auth backend

Constraints

Part of #251

Re-queued Context

Last agent summary

Rendered prompt is 133369 bytes, exceeding the 100000-byte ceiling.

Blockers

  • Prompt size 133369 bytes exceeds 100000-byte limit.
  • Retrying with more prior-attempt context will not help; the task body itself must be trimmed.

Files changed

  • None

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions