Fixed: Fallback to Forms for removed Basic auth method

This commit is contained in:
Bogdan 2025-06-11 20:13:03 +03:00
parent 88502cd020
commit fe198352a3

View file

@ -2,22 +2,27 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.Options;
using NLog;
using NzbDrone.Core.Authentication;
using NzbDrone.Core.Configuration;
namespace Prowlarr.Http.Authentication
{
public class UiAuthorizationPolicyProvider : IAuthorizationPolicyProvider
{
private const string POLICY_NAME = "UI";
private const string PolicyName = "UI";
private readonly IConfigFileProvider _config;
private readonly Logger _logger;
public DefaultAuthorizationPolicyProvider FallbackPolicyProvider { get; }
public UiAuthorizationPolicyProvider(IOptions<AuthorizationOptions> options,
IConfigFileProvider config)
IConfigFileProvider config,
Logger logger)
{
FallbackPolicyProvider = new DefaultAuthorizationPolicyProvider(options);
_config = config;
_logger = logger;
}
public Task<AuthorizationPolicy> GetDefaultPolicyAsync() => FallbackPolicyProvider.GetDefaultPolicyAsync();
@ -26,9 +31,21 @@ public UiAuthorizationPolicyProvider(IOptions<AuthorizationOptions> options,
public Task<AuthorizationPolicy> GetPolicyAsync(string policyName)
{
if (policyName.Equals(POLICY_NAME, StringComparison.OrdinalIgnoreCase))
if (policyName.Equals(PolicyName, StringComparison.OrdinalIgnoreCase))
{
var policy = new AuthorizationPolicyBuilder(_config.AuthenticationMethod.ToString())
var authenticationMethod = _config.AuthenticationMethod;
#pragma warning disable CS0618 // Type or member is obsolete
if (authenticationMethod == AuthenticationType.Basic)
#pragma warning restore CS0618 // Type or member is obsolete
{
_logger.Error("Basic authentication method was removed, use Forms authentication instead.");
authenticationMethod = AuthenticationType.Forms;
}
var policy = new AuthorizationPolicyBuilder()
.AddAuthenticationSchemes(authenticationMethod.ToString())
.AddRequirements(new BypassableDenyAnonymousAuthorizationRequirement());
return Task.FromResult(policy.Build());