in ASPNET Core, C#

Configurare Swagger con Bearer Token

In .Net Core quando vengono create delle API protette con Bearer Token è necessario generare il token ed utilizzarlo all’interno dell’header delle chiamate alle API protette.

Ad esempio, ci si potrebbe trovare nello scenario in cui il token viene generato tramite un’API dedicata al login, e successivamente lo si utilizza per le chiamate alle API protette.

Utilizzando Postman è possibile aggiungere l’autenticazione tramite token direttamente all’interno della sezione Authorization, selezionando il tipo di token (Bearer Token) e copiando il valore del token:

All’interno di un applicazione .NET Core questo tipo di approccio si può implementare piuttosto facilmente utilizzando Identity e utilizzando Swagger all’interno delle Web API. Non tutti sanno però che swagger può essere configurato in modo da poter gestire le chiamate tramite token.

In pratica l’interfaccia grafica di Swagger consente di impostare il token (preventivamente ottenuto) ed utilizzarlo all’interno di tutte le API documentate.

Partendo da un progetto in .NET 6 (non è presente Startup.cs ma solo il Program.cs), è necessario aggiugere queste righe per inserie la possibilità di gestione del token all’interno di swagger:

builder.Services.AddSwaggerGen(opt =>
{
    opt.SwaggerDoc("v1", new OpenApiInfo { Title = "MyApplication", Version = "v1" });
    opt.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
    {
        In = ParameterLocation.Header,
        Description = "Please enter token",
        Name = "Authorization",
        Type = SecuritySchemeType.Http,
        BearerFormat = "JWT",
        Scheme = "bearer"
    });
    opt.AddSecurityRequirement(new OpenApiSecurityRequirement
    {
        {
            new OpenApiSecurityScheme
            {
                Reference = new OpenApiReference
                {
                    Type = ReferenceType.SecurityScheme,
                    Id = "Bearer"
                }
            },
            Array.Empty<string>()
        }
    });
});

A questo punto, una volta eseguita l’applicazione troveremo all’interno di swagger la possibilità di inserire il token. Una volta inserito sarà valido per tutte le chiamate che verranno effettute.

Ed ecco il popup visualizzato per l’inserimento del token: