feat(API): Methode zur Injektion von Abhängigkeiten hinzugefügt, um API-Schlüssel-Filter hinzuzufügen

This commit is contained in:
Developer 02 2024-10-28 16:58:50 +01:00
parent b460de4e37
commit e17875dad7
4 changed files with 17 additions and 3 deletions

View File

@ -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))
{
}

View File

@ -0,0 +1,10 @@
using WorkFlow.API.Filters;
namespace WorkFlow.API.Extensions
{
public static class DIExtensions
{
public static IServiceCollection AddAPIKeyAuth(this IServiceCollection services, Func<string, bool> isValidKey, string apiKeyHeaderName = "X-API-Key")
=> services.AddSingleton<APIKeyAuthFilter>(provider => new(isValidKey: isValidKey, apiKeyHeaderName: apiKeyHeaderName));
}
}

View File

@ -3,7 +3,7 @@ using Microsoft.AspNetCore.Mvc;
namespace WorkFlow.API.Filters
{
public class ApiKeyAuthFilter(Func<string, bool> isValidKey, string apiKeyHeaderName = "X-API-Key") : IAuthorizationFilter
public class APIKeyAuthFilter(Func<string, bool> isValidKey, string apiKeyHeaderName = "X-API-Key") : IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{

View File

@ -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<string>("API-Key") is string apiKey)
builder.Services.AddApiKeyAuth(key => key == apiKey);
builder.Services.AddControllers();