Ez4.ClientAccess.Swagger
8.0.1
dotnet add package Ez4.ClientAccess.Swagger --version 8.0.1
NuGet\Install-Package Ez4.ClientAccess.Swagger -Version 8.0.1
<PackageReference Include="Ez4.ClientAccess.Swagger" Version="8.0.1" />
<PackageVersion Include="Ez4.ClientAccess.Swagger" Version="8.0.1" />
<PackageReference Include="Ez4.ClientAccess.Swagger" />
paket add Ez4.ClientAccess.Swagger --version 8.0.1
#r "nuget: Ez4.ClientAccess.Swagger, 8.0.1"
#:package Ez4.ClientAccess.Swagger@8.0.1
#addin nuget:?package=Ez4.ClientAccess.Swagger&version=8.0.1
#tool nuget:?package=Ez4.ClientAccess.Swagger&version=8.0.1
Ez4.ClientAccess.Swagger
Prunes a Swashbuckle-generated Swagger/OpenAPI document down to what the calling client is
actually allowed to see: paths outside its Ez4.ClientAccess grant, tags no longer referenced by
any remaining path, and components.schemas entries no longer reachable from any remaining path.
Also ships a Basic Auth scheme/policy pair for gating the Swagger UI itself, independent of the
host's real authentication.
Usage
using Ez4.ClientAccess.Swagger;
builder.Services.AddSwaggerGen();
builder.Services.AddClientAccessSwaggerBasicAuth(); // optional: gates Swagger UI with Basic Auth
var app = builder.Build();
app.UseSwagger(options =>
{
options.PreSerializeFilters.Add(new ClientAccessSwaggerFilter().Apply);
});
app.UseSwaggerUI().RequireAuthorization("SwaggerBasicAuth"); // if AddClientAccessSwaggerBasicAuth() was called
Or via the SwaggerEndpointOptions extension:
app.UseSwaggerUI(options =>
{
options.AddClientAccessSwaggerFilter();
});
An admin client id (ClientAccessOptions.AdminClientIds) bypasses path pruning and sees every
path; restricted-path removal (Swagger:RestrictedPaths config) still applies to everyone,
admins included.
{
"Swagger:RestrictedPaths": ["/api/internal/debug"],
"SwaggerBasicAuth": {
"Users": { "admin": "changeme" }
}
}
Requires
Ez4.ClientAccess registered in the same host (builder.AddClientPathFromJsonPolicy()) — this
package reads its IClientAccessSnapshot/ClientAccessOptions to decide what to prune.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
-
net8.0
- Ez4.ClientAccess (>= 8.0.0)
- Swashbuckle.AspNetCore (>= 10.2.3)
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 |
|---|