Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Post History
One way to solve this without customizing the Swagger UI is to deal with it on the server side. The following assumes that the swagger docs is served at /swagger relative path. Middleware /// <...
Answer
#1: Initial revision
One way to solve this without customizing the Swagger UI is to deal with it on the server side. The following assumes that the swagger docs is served at `/swagger` relative path. ## Middleware /// <summary> /// Middleware to protect API Swagger docs /// </summary> public class SwaggerAuthorizationMiddleware { private readonly RequestDelegate _next; private readonly ILogger _logger; public SwaggerAuthorizationMiddleware(RequestDelegate next, ILogger<SwaggerAuthorizationMiddleware> logger) { _next = next; _logger = logger; } public async Task Invoke(HttpContext context) { // If API documentation route and user isn't authenticated or doesn't have the appropriate authorization, then block if (context.Request.Path.StartsWithSegments("/swagger") && !context.User.Identity.IsAuthenticated) { _logger.LogWarning($"API documentation endpoint unauthorized access attempt by [{context.Connection.RemoteIpAddress}]"); context.Response.StatusCode = StatusCodes.Status401Unauthorized; return; } await _next.Invoke(context); } ## Startup (in Configure method) app.UseAuthentication(); app.UseAuthorization(); app.UseMiddleware<SwaggerAuthorizationMiddleware>(); [Reference](https://stackoverflow.com/questions/62454751/how-do-we-secure-swagger-ui-with-windows-authentication)