wip: docs(sso): plan to route all beefcake web apps through kanidm SSO #680
Draft
lytedev
wants to merge 1 commit from
sec-sso-plan into main
pull from: sec-sso-plan
merge into: lytedev:main
lytedev:main
lytedev:propose/collie-voice
lytedev:propose/education-account
lytedev:propose/element-x-personal-releases
lytedev:propose/module-directory-scanner
lytedev:propose/special-args-cleanup
lytedev:propose/limine-fallback
lytedev:propose/household-kiosk
lytedev:propose/xwayland-ei-display-from-client
lytedev:propose/steamdeck-mouse-steps-aside-for-games
lytedev:propose/assistant-watch
lytedev:propose/lpcamm-watch
lytedev:propose/agents-where-information-lives
lytedev:propose/tuwunel-1.9.2
lytedev:propose/pin-flake-registry
lytedev:propose/headscale-0-29-3
lytedev:propose/canary-freshness-per-repo
lytedev:propose/boot-guard-efivars-fix
lytedev:propose/deck-dock-panel-under-niri
lytedev:propose/admindevice-ssh-anything
lytedev:propose/kdeconnect-announce
lytedev:steamdeck-mgba
lytedev:propose/doorbell-no-internet
lytedev:propose/ha-list-tasks
lytedev:propose/ha-music-not-found
lytedev:propose/bc250-40cu-measured
lytedev:propose/multiboot-foxtrot-dragon
lytedev:propose/pitft-stmpe-drive
lytedev:propose/foxtrot-multiboot-prep
lytedev:propose/pitft-no-smartd
lytedev:propose/kexec-luks-reboot
lytedev:propose/foxtrot-multiboot
lytedev:propose/model-eval
lytedev:propose/foxtrot-vm-seats
lytedev:iamb-sender
lytedev:propose/calendar-alarms
lytedev:pinephone-niri
lytedev:push-tsntxvxynzps
lytedev:propose/spoof-reject-cleanups
lytedev:propose/finance-pipeline
lytedev:steamframe-plan
lytedev:pinephone-buildable
lytedev:deck-pose-wip
lytedev:aerc-open-html
lytedev:local-auth-unification
lytedev:iamb-dotfiles
lytedev:esphome-music-panel
lytedev:wifi-system-profile
lytedev:gauge-history
lytedev:validate-gate-fix2
lytedev:validate-slot-no-hugepages
lytedev:pinephone-reenable
lytedev:cyberdeck-research
lytedev:git-anon-ratelimit
lytedev:headscale-basedomain
lytedev:ssd-fast-tier
lytedev:hold-impermanence-flip
lytedev:gate-dummy-eval
lytedev:zen-browser
lytedev:initrd-remote-unlock
lytedev:beefcake-rpool-backup
lytedev:sec-mail
lytedev:flab-lid-wake
lytedev:hearth-k8s
lytedev:zulip
lytedev:router-guest-vlan
lytedev:headscale-extra-records
lytedev:beefcake-advertise-lan
lytedev:push-qrvuuqmxtznv
lytedev:voxtype-per-host-model
lytedev:cleanup
lytedev:push-kanidm-opt-in
lytedev:push-voxtype-flake-fix
lytedev:push-uvqqknxvqlvy
lytedev:push-qrqsxkmlrevert
lytedev:fix-kanidm-uid-attr-map
lytedev:nix-on-droid
lytedev:self-hosted-dns
lytedev:fix-runner-tmpfs-revert
lytedev:beefcake-email
lytedev:beefcake-immich
lytedev:firefox-nightly-devedition
lytedev:fix-bun-baseline
lytedev:flab-stuff
lytedev:printer-sftp
lytedev:dragon-vr-monado
lytedev:clever-vr-game-clamshell-mode-detection
lytedev:wireguard-mesh
lytedev:rescue-beefcake-unpushed-nix
No reviewers
Labels
No labels
bug
enhancement
question
scary
upstream
Milestone
Clear milestone
No items
No milestone
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
lytedev/nix!680
Loading…
Reference in a new issue
No description provided.
Delete branch "sec-sso-plan"
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?
What
A design/plan doc (
lib/doc/sso-plan.md) for the security-audit SSO workstream. Doc only — no runtime changes, no nix code.Deliverables
music-assistant.h.lyte.dev— zero auth on an admin/API surface.git.lyte.dev— kanidm client exists but the OIDC source is configured by hand in Forgejo's admin UI, not in nix.files.lyte.dev/tasks.h.lyte.dev— public; intent needs confirming.kanidm-oauth2-secretsfetcher flow (finish forgejo; add audiobookshelf, paperless).forward_auth→ a sharedoauth2-proxy(itself a kanidm OIDC client), for apps with no OIDC — kanidm has no forward-auth endpoint. Chosen over Authelia / caddy-security and justified; slots into the same20-oauth2.hjson+ secret-fetcher flow. Module shape + per-app opt-in sketched and option names verified against this flake'sservices.oauth2-proxy(7.15.3).host-beefcake∈idm_oauth2_admins): documents that this is create/modify over all OAuth2 clients (SSO-wide-rewrite blast radius, not just read), that kanidm exposes no read-only-secret role, and lists mitigations (dedicatedoauth-secret-readeraccount, token custody + rotation runbook, a custom-ACP hardening spike).Reference implementation
music-assistant behind the shared gate is fully specified but intentionally not shipped enabled — a working deploy needs a sops cookie secret (only Daniel can encrypt) + a live
sso-gateclient bootstrap, and can't be live-verified read-only. Shipping a half-bootstrapped oauth2-proxy would violate verify-before-merge / don't-deploy, so it's delivered as ready-to-enable code in the doc and a focused follow-up PR. Keeps this PR to one thing.Review asks
files.lyte.dev/tasks.h.lyte.devintent, and leaving atuin/home-assistant on their own auth).🤖 Generated with Claude Code
docs(sso): plan to route all beefcake web apps through kanidm SSOto wip: docs(sso): plan to route all beefcake web apps through kanidm SSOView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.