Auth.ApiKey 1.0.0

dotnet add package Auth.ApiKey --version 1.0.0
NuGet\Install-Package Auth.ApiKey -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Auth.ApiKey" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Auth.ApiKey --version 1.0.0
#r "nuget: Auth.ApiKey, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Auth.ApiKey as a Cake Addin
#addin nuget:?package=Auth.ApiKey&version=1.0.0

// Install Auth.ApiKey as a Cake Tool
#tool nuget:?package=Auth.ApiKey&version=1.0.0

Overview

This package contains code and extension methods to make the process of API key authentication to an API, including to yor Swagger definition, straightforward by removing a lot of the boilerplate code.

Setup

SwaggerGen

Within the AddSwaggerGen options, add config.AddAuthorizeButton(); where config is the SwaggerGenOptions variable you have declared.

Authentication

Assuming the only authentication method being used is API key, the following snippet can be used:

builder.Services.AddAuthentication(config =>
{
    config.DefaultAuthenticateScheme = ApiKeyAuthenticationOptions.DefaultScheme;
    config.DefaultChallengeScheme = ApiKeyAuthenticationOptions.DefaultScheme;
}).AddApiKeySupport();

Authorization

The basic authorization policy (i.e. any key is valid for any thing), can be configured using the following snippet:

builder.Services.AddAuthorization(config =>
{
    config.AddApiPolicy(builder.Configuration);
});

By default, this looks for a config section called ApiKeys but by passing an addition parameter to AddApiPolicy, a difference configuration key can be specified.

Adding Middleware

Before mapping endpoints, add the authentication and authorization middleware:

app.UseAuthentication();
app.UseAuthorization();

appsettings.json

Finally, add a section to appsettings.json (or another file, User Secrets, etc...) using the following format for each API key you wish to permit access:

{
  "ApiKeys": [
    "MyFirstApiKey",
    "AnotherApiKey"
  ]
}

Restricting Endpoints

Controllers

Add the [Authorize] attribute before the controller or endpoint you wish to protect.

Minimal APIs

Either add the [Authorize] attribute before the () of the handler declaration:

app.MapGet("/hellosecureworld", [Authorize] () =>
{
    return "Hello secure world!";
})

Alternative, after the declaration, add a RequireAuthorization() call after declaring the endpoint:

app.MapGet("/hellosecureworld", () =>
{
    return "Hello secure world!";
}).RequireAuthorization();
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0 480 4/17/2022