Quando dobbiamo utilizzare SQL Azure, possiamo utilizzare un token come meccanismo di autenticazione verso il database grazie a MSI. Grazie a questa funzionalità, non dobbiamo specificare username e password nella stringa di connessione, ma dobbiamo chiedere al servizio di identity un token per accedere al database in base all'identity della nostra applicazione. Questo token viene poi passato al database che lo valida e ci da accesso (previa configurazione dell'ambiente). Per un maggior approfondimento su questa tecnica rimandiamo all'articoolo di cristian civera su azure italia relativo a questo argomento.
EF Core non supporta direttamente la richiesta e la configurazione del token, ma abbiamo comunque la possibilità di recuperare il token manualmente, creare una connessione al database, configurarne il token e poi passare la connessione a EF Core che la userà per connettersi al database.
Questo processo viene gestito nello startup dell'applicazione attraverso il metodo AddDbContext.
services.AddDbContext<ApplicationDbContext>(o => { var conn = new SqlConnection("connectionstring"); conn.AccessToken = new AzureServiceTokenProvider() .GetAccessTokenAsync("https://database.windows.net/") .Result; o.UseSqlServer(conn); });
Il codice è piuttosto semplice, ma vanno sottolineate alcune cose. Innanzitutto, questa funzionalità è disponibile solo dalla versione 2.2 di .NET Core in quanto la proprietà AccessToken sull'oggetto SqlConnection è stata introdotta in questa versione. Inoltre, poichè la scadenza del token è serializzata secondo il formato americano, è importante che la culture del thread abbia come formato della data "dd/MM/YYYY" altrimenti si riceve un'eccezione a runtime per il mancato parsing della data di scadenza del token.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Reactive form tipizzati con modellazione del FormBuilder in Angular
Limitare le richieste lato server con l'interactive routing di Blazor 8
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Configurare policy CORS in Azure Container Apps
Gestire la cancellazione di una richiesta in streaming da Blazor
Utilizzare il trigger SQL con le Azure Function
Eseguire query verso tipi non mappati in Entity Framework Core
Sostituire la GitHub Action di login su private registry
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Ordinare randomicamente una lista in C#
Implementare il throttling in ASP.NET Core
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Windows Server 2003 SP1 Italiano
- Creare un modulo e un controller con AngularJS
- Build 2014: tutte le novità per gli sviluppatori in diretta da San Francisco
- Rilasciata la versione RTM di Windows Vista SP1