mirror of
https://github.com/Prowlarr/Prowlarr
synced 2025-12-15 21:14:32 +01:00
Fixed: Fallback to Forms for removed Basic auth method
This commit is contained in:
parent
88502cd020
commit
fe198352a3
1 changed files with 21 additions and 4 deletions
|
|
@ -2,22 +2,27 @@
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
|
using NLog;
|
||||||
|
using NzbDrone.Core.Authentication;
|
||||||
using NzbDrone.Core.Configuration;
|
using NzbDrone.Core.Configuration;
|
||||||
|
|
||||||
namespace Prowlarr.Http.Authentication
|
namespace Prowlarr.Http.Authentication
|
||||||
{
|
{
|
||||||
public class UiAuthorizationPolicyProvider : IAuthorizationPolicyProvider
|
public class UiAuthorizationPolicyProvider : IAuthorizationPolicyProvider
|
||||||
{
|
{
|
||||||
private const string POLICY_NAME = "UI";
|
private const string PolicyName = "UI";
|
||||||
private readonly IConfigFileProvider _config;
|
private readonly IConfigFileProvider _config;
|
||||||
|
private readonly Logger _logger;
|
||||||
|
|
||||||
public DefaultAuthorizationPolicyProvider FallbackPolicyProvider { get; }
|
public DefaultAuthorizationPolicyProvider FallbackPolicyProvider { get; }
|
||||||
|
|
||||||
public UiAuthorizationPolicyProvider(IOptions<AuthorizationOptions> options,
|
public UiAuthorizationPolicyProvider(IOptions<AuthorizationOptions> options,
|
||||||
IConfigFileProvider config)
|
IConfigFileProvider config,
|
||||||
|
Logger logger)
|
||||||
{
|
{
|
||||||
FallbackPolicyProvider = new DefaultAuthorizationPolicyProvider(options);
|
FallbackPolicyProvider = new DefaultAuthorizationPolicyProvider(options);
|
||||||
_config = config;
|
_config = config;
|
||||||
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task<AuthorizationPolicy> GetDefaultPolicyAsync() => FallbackPolicyProvider.GetDefaultPolicyAsync();
|
public Task<AuthorizationPolicy> GetDefaultPolicyAsync() => FallbackPolicyProvider.GetDefaultPolicyAsync();
|
||||||
|
|
@ -26,9 +31,21 @@ public UiAuthorizationPolicyProvider(IOptions<AuthorizationOptions> options,
|
||||||
|
|
||||||
public Task<AuthorizationPolicy> GetPolicyAsync(string policyName)
|
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());
|
.AddRequirements(new BypassableDenyAnonymousAuthorizationRequirement());
|
||||||
|
|
||||||
return Task.FromResult(policy.Build());
|
return Task.FromResult(policy.Build());
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue