Quando vogliamo proteggere le API in ASP.NET Core tramite Azure Active Directory, possiamo utilizzare il nuovo modulo Microsoft.Identity.Web, che ci consente di configurare la security con una sola riga di codice.
public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApi(Configuration.GetSection("AzureAd")); // .. altro codice qui .. }
Questa configurazione utilizza per default il claim denominato preferred_username come nome utente, associandolo alla proprietà ClaimsIdentity.Name. Nella maggioranza dei casi, il contenuto di questo claim corrisponde all'indirizzo email dell'utente, che sarà quindi il dato restituito, per esempio, da una action come quella in basso:
public class SomeController : ControllerBase { [HttpGet] public string Get() { return this.User.Identity.Name; } }
Tuttavia, in alcune occasioni potrebbe far comodo utilizzare un claim differente, per esempio name, che contiene invece il full name dell'utente. Questo mapping può essere configurato in fase di startup:
public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApi(options => { Configuration.Bind("AzureAd", options); options.TokenValidationParameters.NameClaimType = "name"; }, options => { Configuration.Bind("AzureAd", options); }); // .. altro codice qui .. }
Purtroppo l'overload di AddMicrosoftIdentityWebApi da utilizzare non è dei più eleganti, e ci costringe a referenziare per due volte la stessa sezione del file di configurazione. Tutto ciò che dobbiamo fare è impostare la proprietà TokenValidationParameters.NameClaimType a name, che è il claim desiderato.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Usare il versioning con i controller di ASP.NET Core Web API
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Disabilitare automaticamente un workflow di GitHub (parte 2)
Definire stili a livello di libreria in Angular
Effettuare chiamate con versioning da Blazor ad ASP.NET Core
Eseguire attività con Azure Container Jobs
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Miglioramenti nell'accessibilità con Angular CDK
Evitare il flickering dei componenti nel prerender di Blazor 8
Configurare policy CORS in Azure Container Apps
Usare le collection expression per inizializzare una lista di oggetti in C#
I più letti di oggi
- Nuova versione per jQuery e prima alpha per jQuery Mobile
- Paginare i risultati con QuickGrid in Blazor
- Utilizzare il trigger SQL con le Azure Function
- Eliminare una determinata proprietà da un oggetto JavaScript
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Modern web apps with Blazor