Soenneker.Swashbuckle.Authentication
11.0.3045
Prefix Reserved
dotnet add package Soenneker.Swashbuckle.Authentication --version 11.0.3045
NuGet\Install-Package Soenneker.Swashbuckle.Authentication -Version 11.0.3045
<PackageReference Include="Soenneker.Swashbuckle.Authentication" Version="11.0.3045" />
<PackageVersion Include="Soenneker.Swashbuckle.Authentication" Version="11.0.3045" />
<PackageReference Include="Soenneker.Swashbuckle.Authentication" />
paket add Soenneker.Swashbuckle.Authentication --version 11.0.3045
#r "nuget: Soenneker.Swashbuckle.Authentication, 11.0.3045"
#:package Soenneker.Swashbuckle.Authentication@11.0.3045
#addin nuget:?package=Soenneker.Swashbuckle.Authentication&version=11.0.3045
#tool nuget:?package=Soenneker.Swashbuckle.Authentication&version=11.0.3045
Soenneker.Swashbuckle.Authentication
Protects a Swagger path with HTTP Basic credentials, optional role-bearing access keys, or an explicit local-request bypass.
Installation
dotnet add package Soenneker.Swashbuckle.Authentication
Configuration
{
"Swagger": {
"Uri": "/swagger",
"Username": "docs-admin",
"Password": "replace-with-a-secret",
"LocalAuthenticationBypassEnabled": false,
"AccessKeys": [
"support:replace-with-a-random-key",
"developer:replace-with-another-random-key"
]
}
}
Username and Password are required. Uri defaults to /swagger. Each optional access-key entry uses role:key; a successful key creates an authenticated principal named accesskey with that role. Basic credentials create an admin principal.
Keep credentials and access keys in a secret provider or environment variables rather than a committed settings file.
Middleware order
Register authentication before the Swagger middleware so requests cannot reach the UI or JSON document first:
using Soenneker.Swashbuckle.Authentication.Registrars;
app.UseSwashbuckleAuth();
app.UseSwagger();
app.UseSwaggerUI();
Requests outside the configured Swagger path pass through unchanged. Unauthorized requests under that path receive 401 with a Basic authentication challenge.
Access-key links
An access key can be supplied as ?accesskey=.... A valid key is persisted in an HTTP-only, same-site session cookie restricted to the Swagger path; the cookie is marked secure when the request uses HTTPS.
Query strings commonly appear in browser history, proxy logs, monitoring tools, and copied URLs. Use random, revocable keys, send access-key links only over HTTPS, and remove the key from the address bar after the first authenticated request. Opening the Swagger landing page without an access-key query clears the existing access-key cookie.
Local bypass
Leave LocalAuthenticationBypassEnabled disabled unless the deployment's connection-address handling is fully trusted. The bypass relies on HttpContext.Connection addresses; forwarded-header middleware, proxies, or test middleware that rewrites those addresses can affect what counts as local.
This middleware protects Swagger endpoints but is not a replacement for application-wide authentication, authorization, TLS, rate limiting, or secret rotation.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net11.0 is compatible. |
-
net11.0
- Soenneker.Extensions.Configuration (>= 11.0.913)
- Soenneker.Extensions.Enumerable (>= 4.0.689)
- Soenneker.Extensions.HttpContext (>= 4.0.777)
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 |
|---|---|---|
| 11.0.3045 | 0 | 10/26/2026 |
| 4.0.3044 | 0 | 10/25/2026 |
| 4.0.3043 | 186 | 10/15/2026 |
| 4.0.3042 | 87 | 10/15/2026 |
| 4.0.3041 | 92 | 10/15/2026 |
| 4.0.3040 | 93 | 10/14/2026 |
| 4.0.3039 | 88 | 10/14/2026 |
| 4.0.3038 | 95 | 10/14/2026 |
| 4.0.3037 | 87 | 10/14/2026 |
| 4.0.3034 | 84 | 10/14/2026 |
| 4.0.3027 | 91 | 10/13/2026 |
| 4.0.3025 | 88 | 10/13/2026 |
| 4.0.3022 | 88 | 10/12/2026 |
| 4.0.3021 | 99 | 10/12/2026 |
| 4.0.3020 | 96 | 10/11/2026 |
| 4.0.3019 | 98 | 10/11/2026 |
| 4.0.3018 | 99 | 10/11/2026 |
| 4.0.3016 | 96 | 10/11/2026 |
| 4.0.3015 | 100 | 10/9/2026 |
| 4.0.3014 | 178 | 10/1/2026 |
Migrate to .NET 11 and version 11