mirror of
https://github.com/Radarr/Radarr.git
synced 2026-03-05 13:21:25 -05:00
Add explicit ApiKey requirement for ApiKey auth
(cherry picked from commit 8a3a998243e888e8f27c609f4bace5b42ad7ec50)
This commit is contained in:
@@ -177,20 +177,17 @@ namespace NzbDrone.Host
|
||||
services.AddDataProtection()
|
||||
.PersistKeysToFileSystem(new DirectoryInfo(Configuration["dataProtectionFolder"]));
|
||||
|
||||
services.AddSingleton<IAuthorizationPolicyProvider, UiAuthorizationPolicyProvider>();
|
||||
services.AddSingleton<IAuthorizationHandler, UiAuthorizationHandler>();
|
||||
|
||||
services.AddAuthorization(options =>
|
||||
{
|
||||
options.AddPolicy("SignalR", policy =>
|
||||
{
|
||||
policy.AuthenticationSchemes.Add("SignalR");
|
||||
policy.RequireAuthenticatedUser();
|
||||
policy.Requirements.Add(new ApiKeyRequirement());
|
||||
});
|
||||
|
||||
// Require auth on everything except those marked [AllowAnonymous]
|
||||
options.FallbackPolicy = new AuthorizationPolicyBuilder("API")
|
||||
.RequireAuthenticatedUser()
|
||||
.AddRequirements(new ApiKeyRequirement())
|
||||
.Build();
|
||||
});
|
||||
|
||||
|
||||
20
src/Radarr.Http/Authentication/ApiKeyRequirement.cs
Normal file
20
src/Radarr.Http/Authentication/ApiKeyRequirement.cs
Normal file
@@ -0,0 +1,20 @@
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
namespace NzbDrone.Http.Authentication
|
||||
{
|
||||
public class ApiKeyRequirement : AuthorizationHandler<ApiKeyRequirement>, IAuthorizationRequirement
|
||||
{
|
||||
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ApiKeyRequirement requirement)
|
||||
{
|
||||
var apiKeyClaim = context.User.FindFirst(c => c.Type == "ApiKey");
|
||||
|
||||
if (apiKeyClaim != null)
|
||||
{
|
||||
context.Succeed(requirement);
|
||||
}
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user