Plugin version
2.0.3.0
Server type and version
Jellyfin 10.11.11
Area
Seerr integration
What happened
A Jellyfin user that only ever authenticated via OIDC/SSO (jellyfin-plugin-sso,
SSO-Only mode: DisablePasswordLogin=true, no native Jellyfin password at all
except a break-glass admin account) logs into Jellyfin fine, but inside the
Moonfin app's Seerr-connect screen is only offered two login methods:
- "Jellyfin Account" (username + password) - fails. The user has no native
Jellyfin password, and DisablePasswordLogin blocks Seerr's server-side
mediaServerLogin credential check as well, not just the interactive
Jellyfin login form - so this path is dead for every user on the server,
not just this one.
- "Local Account" (Seerr email + password) - works, but requires an admin
to manually create/patch a local Seerr account + password for every
single SSO-only user. Doesn't scale, and reintroduces a stored password
the whole point of SSO was to avoid.
Users migrated to SSO after already having a working native Jellyfin
password still work fine in Moonfin's Seerr integration - but only because
Moonfin's saved Seerr session predates the switch to SSO-Only and is just
being reused from cache (SaveSessionAsync/LoadSessionAsync), never
re-validated against a live Jellyfin password check. A brand-new pure-SSO
user has no such cached session and hits a hard wall.
Seerr itself already has a full native Jellyfin Quick Connect login flow
that needs no OIDC support on Seerr's side at all:
POST /auth/jellyfin/quickconnect/initiate
GET /auth/jellyfin/quickconnect/check
POST /auth/jellyfin/quickconnect/authenticate
(see seerr-api.yml, tag "auth")
And the Moonfin server plugin itself already contains matching scaffolding -
confirmed via strings on Moonfin.Server.dll (Moonbase 2.0.3.0):
Moonfin.Server.Api.SeerrProxyController
- Login
- LoginWithQuickConnect <- present, routed, but not surfaced in any
client UI I've tried
Moonfin.Server.Services.SeerrSessionService
- AuthenticateAsync
- AuthenticateViaQuickConnectAsync
- GetSessionAsync / ValidateSessionAsync / SaveSessionAsync /
LoadSessionAsync / CheckForRotatedCookieAsync
with direct references to MediaBrowser.Controller.QuickConnect / IQuickConnect
in the same code path. So this looks like unfinished wiring rather than a
missing feature: the server-side pieces to drive Seerr's own Quick Connect
flow appear to already exist, they're just not exposed as a login option on
the Seerr-connect screen.
Related: #92, where the maintainer's only suggested fix for this exact
scenario is manually setting a password - which is what prompted me to dig
into why Quick Connect isn't offered there, since Moonfin already uses Quick
Connect for the primary Jellyfin login on the same app.
Steps to reproduce
- Run Jellyfin with jellyfin-plugin-sso in SSO-Only mode (DisablePasswordLogin
= true), so provisioned users have no native password.
- Create a brand-new user purely through the OIDC provider (no prior Jellyfin
account, no password ever set) and let them log into Jellyfin/Jellyseerr
once so the Seerr account gets auto-provisioned and linked via jellyfinUserId.
- Open the Moonfin app (tested on iOS and Android TV) as that user, go to the screen where it asks to
connect/authenticate to Seerr.
- Observe only "Jellyfin Account" and "Local Account" are offered - no
Quick Connect option, despite the same app using Quick Connect for the
primary Jellyfin login moments earlier.
- "Jellyfin Account" fails with Unauthorized / "please enter your password".
The only way through is switching Seerr to allow local logins and manually
creating a local password for the user.
Frequency
Always
Screenshot of the problem
No server-side error/exception to attach for this one: it's not a runtime
failure, it's a missing UI option, so the Jellyfin server log for this
session is clean aside from the expected "please enter your password"
rejection when Jellyfin Account is attempted with no password set.
Server logs / errors (optional)
[2026-08-19 10:22:57.257 +02:00] [WRN] [44] Moonfin.Server.Services.SeerrSessionService: Seerr auth failed for user "testuser": Unauthorized - "{\"message\":\"INVALID_CREDENTIALS\"}"
[2026-08-19 10:23:04.068 +02:00] [WRN] [52] Moonfin.Server.Services.SeerrSessionService: Seerr auth failed for user "testuser": Unauthorized - "{\"message\":\"INVALID_CREDENTIALS\"}"
-- above: two attempts via "Jellyfin Account" (username + password), both rejected
because the user has no native Jellyfin password (DisablePasswordLogin=true in
jellyfin-plugin-sso blocks the credential check server-side, not just the UI form).
[2026-08-19 10:30:04.530 +02:00] [INF] [41] Moonfin.Server.Services.SeerrSessionService: Seerr SSO session created for user "testuser@service.local" (Jellyfin: 04dc3f74-e092-42fa-a2b5-3be607bf1234)
-- above: only succeeded once we switched to "Local Account" and manually created a
Seerr-local email+password for this user. Note the log line itself calls this a
"SSO session" even though it was created via a local-account credential check -
suggesting any session tied to a jellyfinUserId is already treated internally as
equivalent to an SSO session, once it exists.
Plugin version
2.0.3.0
Server type and version
Jellyfin 10.11.11
Area
Seerr integration
What happened
A Jellyfin user that only ever authenticated via OIDC/SSO (jellyfin-plugin-sso,
SSO-Only mode: DisablePasswordLogin=true, no native Jellyfin password at all
except a break-glass admin account) logs into Jellyfin fine, but inside the
Moonfin app's Seerr-connect screen is only offered two login methods:
Jellyfin password, and DisablePasswordLogin blocks Seerr's server-side
mediaServerLogin credential check as well, not just the interactive
Jellyfin login form - so this path is dead for every user on the server,
not just this one.
to manually create/patch a local Seerr account + password for every
single SSO-only user. Doesn't scale, and reintroduces a stored password
the whole point of SSO was to avoid.
Users migrated to SSO after already having a working native Jellyfin
password still work fine in Moonfin's Seerr integration - but only because
Moonfin's saved Seerr session predates the switch to SSO-Only and is just
being reused from cache (SaveSessionAsync/LoadSessionAsync), never
re-validated against a live Jellyfin password check. A brand-new pure-SSO
user has no such cached session and hits a hard wall.
Seerr itself already has a full native Jellyfin Quick Connect login flow
that needs no OIDC support on Seerr's side at all:
POST /auth/jellyfin/quickconnect/initiate
GET /auth/jellyfin/quickconnect/check
POST /auth/jellyfin/quickconnect/authenticate
(see seerr-api.yml, tag "auth")
And the Moonfin server plugin itself already contains matching scaffolding -
confirmed via
stringson Moonfin.Server.dll (Moonbase 2.0.3.0):Moonfin.Server.Api.SeerrProxyController
- Login
- LoginWithQuickConnect <- present, routed, but not surfaced in any
client UI I've tried
Moonfin.Server.Services.SeerrSessionService
- AuthenticateAsync
- AuthenticateViaQuickConnectAsync
- GetSessionAsync / ValidateSessionAsync / SaveSessionAsync /
LoadSessionAsync / CheckForRotatedCookieAsync
with direct references to MediaBrowser.Controller.QuickConnect / IQuickConnect
in the same code path. So this looks like unfinished wiring rather than a
missing feature: the server-side pieces to drive Seerr's own Quick Connect
flow appear to already exist, they're just not exposed as a login option on
the Seerr-connect screen.
Related: #92, where the maintainer's only suggested fix for this exact
scenario is manually setting a password - which is what prompted me to dig
into why Quick Connect isn't offered there, since Moonfin already uses Quick
Connect for the primary Jellyfin login on the same app.
Steps to reproduce
= true), so provisioned users have no native password.
account, no password ever set) and let them log into Jellyfin/Jellyseerr
once so the Seerr account gets auto-provisioned and linked via jellyfinUserId.
connect/authenticate to Seerr.
Quick Connect option, despite the same app using Quick Connect for the
primary Jellyfin login moments earlier.
The only way through is switching Seerr to allow local logins and manually
creating a local password for the user.
Frequency
Always
Screenshot of the problem
No server-side error/exception to attach for this one: it's not a runtime
failure, it's a missing UI option, so the Jellyfin server log for this
session is clean aside from the expected "please enter your password"
rejection when Jellyfin Account is attempted with no password set.
Server logs / errors (optional)
-- above: two attempts via "Jellyfin Account" (username + password), both rejected
because the user has no native Jellyfin password (DisablePasswordLogin=true in
jellyfin-plugin-sso blocks the credential check server-side, not just the UI form).
-- above: only succeeded once we switched to "Local Account" and manually created a
Seerr-local email+password for this user. Note the log line itself calls this a
"SSO session" even though it was created via a local-account credential check -
suggesting any session tied to a jellyfinUserId is already treated internally as
equivalent to an SSO session, once it exists.