Skip to content

[Plugin] Seerr integration lacks Quick Connect login option for SSO-only Jellyfin users #246

Description

@DrPleb

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

  1. Run Jellyfin with jellyfin-plugin-sso in SSO-Only mode (DisablePasswordLogin
    = true), so provisioned users have no native password.
  2. 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.
  3. 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.
  4. 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.
  5. "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

Image

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions