Files
terraform-authentik/config/providers_oauth2/jellyfin.yaml
T
unkin-agent bbbb61777c
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Add Jellyfin OIDC provider, application and RBAC groups
Jellyfin moves to Authentik SSO via jellyfin-plugin-sso (OIDC), keeping
native clients on Jellyfin local/API auth. Adds the oauth2 provider and
application for jellyfin.k8s.syd1.au.unkin.net plus the akP permission
groups gating access, wired into the standard-user and global-admin
roles per the two-tier RBAC model.

- Adds providers_oauth2/jellyfin.yaml: confidential client, secret read
  from kv/kubernetes/namespace/jellyfin/default/oauth-credentials,
  redirect URIs for the SSO plugin callback paths
- Adds akP-jellyfin-admin and akP-jellyfin-user bound to the app
- Nests akP-jellyfin-user under akR-standard-user and
  akP-jellyfin-admin under akR-global-admin
2026-08-23 12:33:55 +10:00

30 lines
1.5 KiB
YAML

# OAuth2/OIDC provider + application for Jellyfin
# (jellyfin.k8s.syd1.au.unkin.net), consumed by jellyfin-plugin-sso (OIDC) so
# the web UI signs in via Authentik while native clients keep Jellyfin local/API
# auth. client_secret is read from Vault, not committed. The plugin requests the
# `ak_groups` scope and matches the hierarchical groups claim against
# akP-jellyfin-admin / akP-jellyfin-user for its admin/user role mapping, so no
# role_mappings claim is needed here. The path segment "authentik" is the SSO
# provider name configured in the plugin — it must match on the Jellyfin side.
name: Jellyfin
authorization_flow: default-provider-authorization-implicit-consent
invalidation_flow: default-provider-invalidation-flow
client_type: confidential
client_id: jellyfin
# Explicit dashboard tile launch URL (the Jellyfin web UI).
launch_url: https://jellyfin.k8s.syd1.au.unkin.net/
client_secret_vault:
mount: kv
path: kubernetes/namespace/jellyfin/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:
# jellyfin-plugin-sso OIDC callback (plugin >= 3.5.2).
- matching_mode: strict
url: https://jellyfin.k8s.syd1.au.unkin.net/sso/OID/redirect/authentik
# Legacy plugin callback path, kept so older plugin builds also work.
- matching_mode: strict
url: https://jellyfin.k8s.syd1.au.unkin.net/sso/OID/r/authentik