In questo primo post abbiamo analizzato un token jwt ed in particolare il tipo di elementi che lo compongono.
Inoltre, abbiamo analizzato i passaggi che vengono eseguiti lato software per verificarne la validità. In questo post analizziamo gli step di validità tramite middleware, in dotnet core.
La modalità di validazione del token JWT che vedremo in questo post è quella che utilizza i Middleware di Dotnet core, versione < 7.
Possiamo configurare la nostra applicazione ASP.NET Core utilizzando due middleware:
- Il middleware OpenIdConnect, che consente alle applicazioni Web ASP.NET Core di autenticare gli utenti e ottenere ID e token di accesso tramite OpenId Connect.
- Il middleware JwtBearer, che consente all’API Web ASP.NET Core di gestire i token di accesso.
Aggiungere i middleware all’interno della nostra applicazione è piuttosto semplice, e passa dalla modifica del file Program.cs. In particolare, l’aggiunta del middleware per la gestione di OpenIdConnect :
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication(options => {
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect("TokenName", options => {
options.Authority = $"https://{builder.Configuration["Domain"]}";
options.ClientId = builder.Configuration["ClientId"];
options.CallbackPath = new PathString("/callback");
});
// ...other code...In pratica viene aggiunta nella chain .AddOpenIdConnect(…) con i parametri necessari alla sua configurazione.
Allo stesso modo deve essere introdotto il middleware per la gestione del token di tipo Bearer :
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options =>
{
options.Authority = $"https://{builder.Configuration["Domain"]}";
options.Audience = builder.Configuration["Audience"];
});In entrambi i casi, configurando l’opzione Authority, chiediamo implicitamente al middleware di validare i token. Il middleware utilizzerà questo valore per recuperare la chiave di firma dell’emittente, necessaria per convalidare la firma del token.
Tutti gli altri passaggi di convalida richiesti vengono eseguiti automaticamente. Non c’è altro da impostare.