Search code examples
.netasp.net-coreswaggerasp.net-core-webapiswagger-2.0

Swagger is not showing 'Authorize' icon


I have an API Project which uses Swagger.

I am using .NET Core Web API (version 6)

Without Authorization, I can not test my end points. I can use POSTMAN but would prefer using Swagger.

missing authorize button


Solution

  • Add Swashbuckle.AspNetCore package to API project. Add the below configuration for to Program class

    builder.Services.AddSwaggerGen(option =>
    {
        option.SwaggerDoc("v1", new OpenApiInfo { Title = "Demo API", Version = "v1" });
        option.AddSecurityDefinition(
            "Bearer",
            new OpenApiSecurityScheme
            {
                In = ParameterLocation.Header,
                Description = "Please enter a valid token",
                Name = "Authorization",
                Type = SecuritySchemeType.Http,
                BearerFormat = "JWT",
                Scheme = "Bearer"
            }
        );
        option.AddSecurityRequirement(
            new OpenApiSecurityRequirement
            {
                {
                    new OpenApiSecurityScheme
                    {
                        Reference = new OpenApiReference
                        {
                            Type = ReferenceType.SecurityScheme,
                            Id = "Bearer"
                        }
                    },
                    new string[] { }
                }
            }
        );
    });
    

    Now you can see the Authorize option on swagger home page and authorization works if you are using jwt tokens.

    For more info refer this blog