From e17875dad73db33517fd81229c05fba20574bbe4 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Mon, 28 Oct 2024 16:58:50 +0100 Subject: [PATCH] =?UTF-8?q?feat(API):=20Methode=20zur=20Injektion=20von=20?= =?UTF-8?q?Abh=C3=A4ngigkeiten=20hinzugef=C3=BCgt,=20um=20API-Schl=C3=BCss?= =?UTF-8?q?el-Filter=20hinzuzuf=C3=BCgen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WorkFlow.API/Attributes/ApiKeyAuthAttribute.cs | 4 ++-- WorkFlow.API/Extensions/DIExtensions.cs | 10 ++++++++++ WorkFlow.API/Filters/ApiKeyAuthFilter.cs | 2 +- WorkFlow.API/Program.cs | 4 ++++ 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 WorkFlow.API/Extensions/DIExtensions.cs diff --git a/WorkFlow.API/Attributes/ApiKeyAuthAttribute.cs b/WorkFlow.API/Attributes/ApiKeyAuthAttribute.cs index fc7f7ac..f9a0e64 100644 --- a/WorkFlow.API/Attributes/ApiKeyAuthAttribute.cs +++ b/WorkFlow.API/Attributes/ApiKeyAuthAttribute.cs @@ -3,9 +3,9 @@ using WorkFlow.API.Filters; namespace WorkFlow.API.Attributes { - public class ApiKeyAuthAttribute : ServiceFilterAttribute + public class APIKeyAuthAttribute : ServiceFilterAttribute { - public ApiKeyAuthAttribute() + public APIKeyAuthAttribute() : base(typeof(ApiKeyAuthFilter)) { } diff --git a/WorkFlow.API/Extensions/DIExtensions.cs b/WorkFlow.API/Extensions/DIExtensions.cs new file mode 100644 index 0000000..24b7dd5 --- /dev/null +++ b/WorkFlow.API/Extensions/DIExtensions.cs @@ -0,0 +1,10 @@ +using WorkFlow.API.Filters; + +namespace WorkFlow.API.Extensions +{ + public static class DIExtensions + { + public static IServiceCollection AddAPIKeyAuth(this IServiceCollection services, Func isValidKey, string apiKeyHeaderName = "X-API-Key") + => services.AddSingleton(provider => new(isValidKey: isValidKey, apiKeyHeaderName: apiKeyHeaderName)); + } +} \ No newline at end of file diff --git a/WorkFlow.API/Filters/ApiKeyAuthFilter.cs b/WorkFlow.API/Filters/ApiKeyAuthFilter.cs index 052b391..25dda53 100644 --- a/WorkFlow.API/Filters/ApiKeyAuthFilter.cs +++ b/WorkFlow.API/Filters/ApiKeyAuthFilter.cs @@ -3,7 +3,7 @@ using Microsoft.AspNetCore.Mvc; namespace WorkFlow.API.Filters { - public class ApiKeyAuthFilter(Func isValidKey, string apiKeyHeaderName = "X-API-Key") : IAuthorizationFilter + public class APIKeyAuthFilter(Func isValidKey, string apiKeyHeaderName = "X-API-Key") : IAuthorizationFilter { public void OnAuthorization(AuthorizationFilterContext context) { diff --git a/WorkFlow.API/Program.cs b/WorkFlow.API/Program.cs index adcadf5..6031d68 100644 --- a/WorkFlow.API/Program.cs +++ b/WorkFlow.API/Program.cs @@ -10,6 +10,8 @@ using Microsoft.IdentityModel.Tokens; using WorkFlow.API.Models; using NLog; using NLog.Web; +using WorkFlow.API.Extensions; +using Microsoft.Extensions.Configuration; var logger = LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger(); logger.Info("Logging initialized."); @@ -34,6 +36,8 @@ try { Claims = user.ToClaimList().ToDictionary(claim => claim.Type, claim => claim.Value as object) }); + if (config.GetValue("API-Key") is string apiKey) + builder.Services.AddApiKeyAuth(key => key == apiKey); builder.Services.AddControllers();