Onboard watchstate into Authentik for oauth2-proxy
ci/woodpecker/pr/plan Pipeline failed
ci/woodpecker/pr/pre-commit Pipeline was successful

watchstate is an internal media watch-state sync admin tool deployed at
watchstate.k8s.syd1.au.unkin.net behind oauth2-proxy (OIDC against
Authentik). Add the OAuth2/OIDC provider + application mirroring the
logviewer/traefik in-cluster admin pattern, gate it with the
akP-watchstate-admin permission group bound to the app, and nest that
permission into the akR-global-admin role so only the admin team can
authorize.
This commit is contained in:
2026-08-25 20:11:38 +10:00
parent 06e71604cf
commit db5bf753b5
3 changed files with 26 additions and 0 deletions
@@ -0,0 +1,3 @@
# Permission group akP-watchstate-admin (name = filename). Grants admin
# access to watchstate: bound to the watchstate application, gating the UI.
application: watchstate
+22
View File
@@ -0,0 +1,22 @@
# OAuth2/OIDC provider + application for watchstate (the internal media
# watch-state sync admin tool, served at
# https://watchstate.k8s.syd1.au.unkin.net in the watchstate namespace). An
# oauth2-proxy in front of the UI performs the OIDC login; access is gated on
# the user's hierarchical ak_groups claim (akP-watchstate-admin).
# client_secret is read from Vault (seeded out of band), never committed.
name: watchstate
authorization_flow: default-provider-authorization-implicit-consent
invalidation_flow: default-provider-invalidation-flow
client_type: confidential
client_id: watchstate
launch_url: https://watchstate.k8s.syd1.au.unkin.net/
client_secret_vault:
mount: kv
path: kubernetes/namespace/watchstate/default/oauth-credentials
scope_mappings:
- goauthentik.io/providers/oauth2/scope-openid
- goauthentik.io/providers/oauth2/scope-email
- goauthentik.io/providers/oauth2/scope-profile
redirect_uris:
- matching_mode: strict
url: https://watchstate.k8s.syd1.au.unkin.net/oauth2/callback
+1
View File
@@ -7,6 +7,7 @@ permissions:
- akP-jellyfin-admin
- akP-traefik-admin
- akP-logviewer-admin
- akP-watchstate-admin
# arrstack has no admin tier (it is a proxy front door); grant global admins
# the front door plus every per-app entitlement so they reach all media apps.
- akP-arrstack-user