Problem
I was looking for a solution to provide a minimal solution for API Keys with minimal effort.
Solution
ApiKeyMiddleware:
public class ApiKeyMiddleware
{
    private readonly RequestDelegate _next;
    private const string APIKEYNAME = "ApiKey";
    public ApiKeyMiddleware(RequestDelegate next)
    {
        _next = next;
    }
    public async Task InvokeAsync(HttpContext context)
    {
        if (!context.Request.Headers.TryGetValue(APIKEYNAME, out var extractedApiKey)
        {
            context.Response.StatusCode = 401;
            await context.Response.WriteAsync("Api key was not provided.");
            return;
        }
    }
    var appSettings = context.RequestServices.GetRequiredService<IConfiguration>();
    var apiKey = appSettings.GetValaue<string>(APIKEYNAME);
    if (!apiKey.Equals(extractedApiKey))
    {
        context.Response.StatusCode = 401;
        await context.Response.WriteAsync("Unauthorized client.");
        return;
    }
    await _next(context)
  
}
Then just register the Project.cs:
app.UseMiddleware<ApiKeyMiddleware>();