Soenneker.Swashbuckle.Authentication
4.0.2966
Prefix Reserved
dotnet add package Soenneker.Swashbuckle.Authentication --version 4.0.2966
NuGet\Install-Package Soenneker.Swashbuckle.Authentication -Version 4.0.2966
<PackageReference Include="Soenneker.Swashbuckle.Authentication" Version="4.0.2966" />
<PackageVersion Include="Soenneker.Swashbuckle.Authentication" Version="4.0.2966" />
<PackageReference Include="Soenneker.Swashbuckle.Authentication" />
paket add Soenneker.Swashbuckle.Authentication --version 4.0.2966
#r "nuget: Soenneker.Swashbuckle.Authentication, 4.0.2966"
#:package Soenneker.Swashbuckle.Authentication@4.0.2966
#addin nuget:?package=Soenneker.Swashbuckle.Authentication&version=4.0.2966
#tool nuget:?package=Soenneker.Swashbuckle.Authentication&version=4.0.2966
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 | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Soenneker.Extensions.Configuration (>= 4.0.875)
- Soenneker.Extensions.Dictionary (>= 4.0.659)
- Soenneker.Extensions.Enumerable (>= 4.0.658)
- Soenneker.Extensions.HttpContext (>= 4.0.734)
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 |
|---|---|---|
| 4.0.2966 | 0 | 9/5/2026 |
| 4.0.2964 | 28 | 9/4/2026 |
| 4.0.2963 | 25 | 9/4/2026 |
| 4.0.2962 | 29 | 9/4/2026 |
| 4.0.2961 | 32 | 9/3/2026 |
| 4.0.2960 | 45 | 9/3/2026 |
| 4.0.2959 | 62 | 9/2/2026 |
| 4.0.2958 | 59 | 9/2/2026 |
| 4.0.2957 | 66 | 9/2/2026 |
| 4.0.2956 | 71 | 9/1/2026 |
| 4.0.2955 | 76 | 8/31/2026 |
| 4.0.2954 | 79 | 8/31/2026 |
| 4.0.2953 | 77 | 8/31/2026 |
| 4.0.2952 | 80 | 8/31/2026 |
| 4.0.2950 | 74 | 8/31/2026 |
| 4.0.2948 | 71 | 8/30/2026 |
| 4.0.2947 | 84 | 8/30/2026 |
| 4.0.2946 | 82 | 8/30/2026 |
| 4.0.2944 | 80 | 8/30/2026 |
| 4.0.2943 | 81 | 8/30/2026 |
Update dependency Soenneker.Extensions.HttpContext to 4.0.734 (#3812)