.net core 3.1 swagger authentication code example

Example 1: integrate swagger in .net core api

/*
To use swagger in an existing .net core api ALL functions must be annotated.
examples of annotations:
[HttpGet], [HttpPost], [NonAction] (for non HTTP actions)
*/ 


// in View>Other Windows>Package Manager Console add package:
Install-Package Swashbuckle.AspNetCore

// in startup.cs add:
using Microsoft.OpenApi.Models;

// in startup.cs edit functions:
// ConfigureServices():
            services.AddMvc();
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo { Title = "<title>", Version = "v1" });
            });

// Configure():
            app.UseSwagger();
            app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "<title> v1"));

// in launchSettings.json add to all profiles:
      "launchUrl": "swagger"

Example 2: basic auth swagger .net core 5

using BasicAuth.API;  
    using BasicAuth.Services;  
    using Microsoft.AspNetCore.Authentication;  
    using Microsoft.AspNetCore.Builder;  
    using Microsoft.AspNetCore.Hosting;  
    using Microsoft.AspNetCore.HttpsPolicy;  
    using Microsoft.AspNetCore.Mvc;  
    using Microsoft.Extensions.Configuration;  
    using Microsoft.Extensions.DependencyInjection;  
    using Microsoft.Extensions.Hosting;  
    using Microsoft.Extensions.Logging;  
    using Microsoft.OpenApi.Models;  
    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Threading.Tasks;  
      
    namespace BasicAuth  
    {  
        public class Startup  
        {  
            public Startup(IConfiguration configuration)  
            {  
                Configuration = configuration;  
            }  
      
            public IConfiguration Configuration { get; }  
      
            // This method gets called by the runtime. Use this method to add services to the container.  
            public void ConfigureServices(IServiceCollection services)  
            {  
      
                services.AddControllers();  
     
                #region Configure Swagger  
                services.AddSwaggerGen(c =>  
                {  
                    c.SwaggerDoc("v1", new OpenApiInfo { Title = "BasicAuth", Version = "v1" });  
                    c.AddSecurityDefinition("basic", new OpenApiSecurityScheme  
                    {  
                        Name = "Authorization",  
                        Type = SecuritySchemeType.Http,  
                        Scheme = "basic",  
                        In = ParameterLocation.Header,  
                        Description = "Basic Authorization header using the Bearer scheme."  
                    });  
                    c.AddSecurityRequirement(new OpenApiSecurityRequirement  
                    {  
                        {  
                              new OpenApiSecurityScheme  
                                {  
                                    Reference = new OpenApiReference  
                                    {  
                                        Type = ReferenceType.SecurityScheme,  
                                        Id = "basic"  
                                    }  
                                },  
                                new string[] {}  
                        }  
                    });  
                });  
                #endregion  
      
                services.AddAuthentication("BasicAuthentication")  
        .AddScheme<AuthenticationSchemeOptions, BasicAuthenticationHandler>("BasicAuthentication", null);  
      
                services.AddScoped<IUserService, UserService>();  
            }  
      
            // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.  
            public void Configure(IApplicationBuilder app, IWebHostEnvironment env)  
            {  
                if (env.IsDevelopment())  
                {  
                    app.UseDeveloperExceptionPage();  
                    app.UseSwagger();  
                    app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "BasicAuth v1"));  
                }  
      
                app.UseHttpsRedirection();  
      
                app.UseRouting();  
                app.UseAuthentication();  
                app.UseAuthorization();  
      
                app.UseEndpoints(endpoints =>  
                {  
                    endpoints.MapControllers();  
                });  
            }  
        }  
    }