feat(API): Methode zur Injektion von Abhängigkeiten hinzugefügt, um API-Schlüssel-Filter hinzuzufügen
This commit is contained in:
parent
b460de4e37
commit
e17875dad7
@ -3,9 +3,9 @@ using WorkFlow.API.Filters;
|
|||||||
|
|
||||||
namespace WorkFlow.API.Attributes
|
namespace WorkFlow.API.Attributes
|
||||||
{
|
{
|
||||||
public class ApiKeyAuthAttribute : ServiceFilterAttribute
|
public class APIKeyAuthAttribute : ServiceFilterAttribute
|
||||||
{
|
{
|
||||||
public ApiKeyAuthAttribute()
|
public APIKeyAuthAttribute()
|
||||||
: base(typeof(ApiKeyAuthFilter))
|
: base(typeof(ApiKeyAuthFilter))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
10
WorkFlow.API/Extensions/DIExtensions.cs
Normal file
10
WorkFlow.API/Extensions/DIExtensions.cs
Normal 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -3,7 +3,7 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
|
|
||||||
namespace WorkFlow.API.Filters
|
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)
|
public void OnAuthorization(AuthorizationFilterContext context)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -10,6 +10,8 @@ using Microsoft.IdentityModel.Tokens;
|
|||||||
using WorkFlow.API.Models;
|
using WorkFlow.API.Models;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NLog.Web;
|
using NLog.Web;
|
||||||
|
using WorkFlow.API.Extensions;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
|
||||||
var logger = LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();
|
var logger = LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();
|
||||||
logger.Info("Logging initialized.");
|
logger.Info("Logging initialized.");
|
||||||
@ -34,6 +36,8 @@ try
|
|||||||
{
|
{
|
||||||
Claims = user.ToClaimList().ToDictionary(claim => claim.Type, claim => claim.Value as object)
|
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();
|
builder.Services.AddControllers();
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user