From dfb6fdfbeb7ce85b287b41fed80f2511727353e5 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Thu, 19 Jun 2025 16:47:34 -0700 Subject: [PATCH] Change authentication to Forms if set to Basic --- .../Configuration/ConfigFileProvider.cs | 19 ++++++++++++++++++- .../AuthenticationBuilderExtensions.cs | 11 ++++------- .../UiAuthorizationPolicyProvider.cs | 4 ++-- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs b/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs index 99ecdfdfe..4518f7bb9 100644 --- a/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs +++ b/src/NzbDrone.Core/Configuration/ConfigFileProvider.cs @@ -209,9 +209,20 @@ namespace NzbDrone.Core.Configuration return AuthenticationType.Forms; } - return Enum.TryParse(_authOptions.Method, out var enumValue) + var value = Enum.TryParse(_authOptions.Method, out var enumValue) ? enumValue : GetValueEnum("AuthenticationMethod", AuthenticationType.None); + +#pragma warning disable CS0618 // Type or member is obsolete + if (value == AuthenticationType.Basic) +#pragma warning restore CS0618 // Type or member is obsolete + { + SetValue("AuthenticationMethod", AuthenticationType.Forms); + + return AuthenticationType.Forms; + } + + return value; } } @@ -386,6 +397,12 @@ namespace NzbDrone.Core.Configuration { SetValue("EnableSsl", false); } +#pragma warning disable CS0618 // Type or member is obsolete + if (AuthenticationMethod == AuthenticationType.Basic) +#pragma warning restore CS0618 // Type or member is obsolete + { + SetValue("AuthenticationMethod", AuthenticationType.Forms); + } } private void DeleteOldValues() diff --git a/src/Sonarr.Http/Authentication/AuthenticationBuilderExtensions.cs b/src/Sonarr.Http/Authentication/AuthenticationBuilderExtensions.cs index 8c0349e46..d422b51c7 100644 --- a/src/Sonarr.Http/Authentication/AuthenticationBuilderExtensions.cs +++ b/src/Sonarr.Http/Authentication/AuthenticationBuilderExtensions.cs @@ -30,7 +30,7 @@ namespace Sonarr.Http.Authentication public static AuthenticationBuilder AddAppAuthentication(this IServiceCollection services) { - services.AddOptions(AuthenticationType.Forms.ToString()) + services.AddOptions(nameof(AuthenticationType.Forms)) .Configure((options, configFileProvider) => { // Replace diacritics and replace non-word characters to ensure cookie name doesn't contain any valid URL characters not allowed in cookie names @@ -47,12 +47,9 @@ namespace Sonarr.Http.Authentication }); return services.AddAuthentication() - .AddNone(AuthenticationType.None.ToString()) - .AddExternal(AuthenticationType.External.ToString()) -#pragma warning disable CS0618 // Type or member is obsolete - .AddCookie(AuthenticationType.Basic.ToString()) -#pragma warning restore CS0618 // Type or member is obsolete - .AddCookie(AuthenticationType.Forms.ToString()) + .AddNone(nameof(AuthenticationType.None)) + .AddExternal(nameof(AuthenticationType.External)) + .AddCookie(nameof(AuthenticationType.Forms)) .AddApiKey("API", options => { options.HeaderName = "X-Api-Key"; diff --git a/src/Sonarr.Http/Authentication/UiAuthorizationPolicyProvider.cs b/src/Sonarr.Http/Authentication/UiAuthorizationPolicyProvider.cs index 50f1c3ada..ef5ac71ff 100644 --- a/src/Sonarr.Http/Authentication/UiAuthorizationPolicyProvider.cs +++ b/src/Sonarr.Http/Authentication/UiAuthorizationPolicyProvider.cs @@ -8,7 +8,7 @@ namespace NzbDrone.Http.Authentication { public class UiAuthorizationPolicyProvider : IAuthorizationPolicyProvider { - private const string POLICY_NAME = "UI"; + private const string PolicyName = "UI"; private readonly IConfigFileProvider _config; public DefaultAuthorizationPolicyProvider FallbackPolicyProvider { get; } @@ -26,7 +26,7 @@ namespace NzbDrone.Http.Authentication public Task GetPolicyAsync(string policyName) { - if (policyName.Equals(POLICY_NAME, StringComparison.OrdinalIgnoreCase)) + if (policyName.Equals(PolicyName, StringComparison.OrdinalIgnoreCase)) { var policy = new AuthorizationPolicyBuilder(_config.AuthenticationMethod.ToString()) .AddRequirements(new BypassableDenyAnonymousAuthorizationRequirement());