mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-05-04 18:09:12 +03:00
Jellyfin login does not work from Apple devices #7880
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
Originally created by @gelato on GitHub (Dec 6, 2025).
Description of the bug
After updating to 2025120105 my Apple devices (Apple TV 4K and Infuse on MacOS) can't login to server.
Browser works perfectly though, Safari = ok, Chrome = ok. When trying to use Infuse for login I receive following error report each time I try to log in:
[13:23:15] [ERR] [12] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL POST /Users/AuthenticateByName. │ │ System.ArgumentNullException: Value cannot be null. (Parameter 'request.App') │ │ at System.ArgumentNullException.Throw(String paramName) │ │ at System.ArgumentNullException.ThrowIfNull(Object argument, String paramName) │ │ at System.ArgumentException.ThrowNullOrEmptyException(String argument, String paramName) │ │ at System.ArgumentException.ThrowIfNullOrEmpty(String argument, String paramName) │ │ at Emby.Server.Implementations.Session.SessionManager.AuthenticateNewSessionInternal(AuthenticationRequest request, Boolean enforcePassword) │ │ at Jellyfin.Api.Controllers.UserController.AuthenticateUserByName(AuthenticateUserByName request) │ │ at lambda_method4931(Closure, Object) │ │ at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object contro │ │ at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 actionResultValueTask) ││ at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync() │
│ --- End of stack trace from previous location --- │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context) │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync() │
│ --- End of stack trace from previous location --- │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) │
│ at Jellyfin.Api.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager) │
│ at Jellyfin.Api.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager) │
│ at Jellyfin.Api.Middleware.IPBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager) │
│ at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) │
│ at Jellyfin.Api.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext) │
│ at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext) │
│ at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext) │
│ at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider) │
│ at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) │
│ at Jellyfin.Api.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext) │
│ at Jellyfin.Api.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext) │
��� at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context) │
│ at Jellyfin.Api.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager) │
│ at Jellyfin.Api.Middleware.ExceptionMiddleware.Invoke(HttpContext context)`
Same goes for Swiftfin (From Apple TV 4K), but when I try to use quick connect error is different:
[13:42:57] [ERR] [50] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL GET /QuickConnect/Initiate. │ │ System.ArgumentNullException: Value cannot be null. (Parameter 'authorizationInfo.DeviceId') │ │ at System.ArgumentNullException.Throw(String paramName) │ │ at System.ArgumentNullException.ThrowIfNull(Object argument, String paramName) │ │ at System.ArgumentException.ThrowNullOrEmptyException(String argument, String paramName) │ │ at System.ArgumentException.ThrowIfNullOrEmpty(String argument, String paramName) │ │ at Emby.Server.Implementations.QuickConnect.QuickConnectManager.TryConnect(AuthorizationInfo authorizationInfo) │ │ at Jellyfin.Api.Controllers.QuickConnectController.InitiateQuickConnect() │ │ at lambda_method35294(Closure, Object) │ │ at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object contro │ │ at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 actionResultValueTask) ││ at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync() │
│ --- End of stack trace from previous location --- │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context) │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync() │
│ --- End of stack trace from previous location --- │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) │
│ at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) │
│ at Jellyfin.Api.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager) │
│ at Jellyfin.Api.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager) │
│ at Jellyfin.Api.Middleware.IPBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager) │
│ at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) │
│ at Jellyfin.Api.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext) │
│ at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext) │
│ at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext) │
│ at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider) │
│ at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) │
│ at Jellyfin.Api.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext) │
│ at Jellyfin.Api.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext) │
│ at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context) │
│ at Jellyfin.Api.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager) │
│ at Jellyfin.Api.Middleware.ExceptionMiddleware.Invoke(HttpContext context)`
So, there's clearly some problem with Apple devices, and I believe it all began with this version: 2025112405
Need to say that my Jellyfin is running in Kubernetes container, envoy-gateway (through gateway api) is working as ingress, and the container is working with host network mode on (available on node IP directly).
Android Jellyfin in the same time works fine, Web version is also fine, and Windows app also works perfectly fine.
I've tried everything to solve this and once I even rested Jellyfin config and set it up from the beginning - that didn't help.
Reproduction steps
What is the current bug behavior?
Can't login from apple apps.
What is the expected correct behavior?
Login works successfully.
Jellyfin Server version
Unstable
Specify commit id
No response
Specify unstable release number
2025120105
Specify version number
No response
Specify the build version
2025120105
Environment
Jellyfin logs
FFmpeg logs
Client / Browser logs
none
Relevant screenshots or videos
No response
Additional information
No response
@nielsvanvelzen commented on GitHub (Dec 6, 2025):
The client you're using is most likely using one of the removed authorization methods. We've announced their deprecation years ago. The client needs to be updated to be compatible with Jellyfin 10.12.
@gelato commented on GitHub (Dec 6, 2025):
That's what I thought and rolled back to 10.11.4 - the behavior is still the same: [14:46:05] [ERR] [7] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL POST /Users/AuthenticateByName. │
│ System.ArgumentNullException: Value cannot be null. (Parameter 'request.App')
@nielsvanvelzen commented on GitHub (Dec 6, 2025):
That's the be expected because we already have a configuration switch to enable the new 10.12 behavior that was automatically turned on when you upgraded. So if you rollback without restoring your old config it will still have the new behavior.
@gelato commented on GitHub (Dec 6, 2025):
Could you provide me that config entry which I need to remove/edit then? So that I won't be needing to restore disk backup for 10th time in the past 2 days :)
@nielsvanvelzen commented on GitHub (Dec 6, 2025):
In
system.xmlchangeEnableLegacyAuthorizationtotrue.@gelato commented on GitHub (Dec 6, 2025):
Everything worked as you said - I've downgraded to 10.11.4 and set EnableLegacyAuthorization to true.
Thank you so much!