Nello script precedente (https://www.aspitalia.com/script/1424/Autenticazione-Basata-Certificati-ASP.NET-Core.aspx) abbiamo visto come creare un certificato per proteggere un endpoint ASP.NET Core: si tratta di un sistema di security molto comune in un contesto server-to-server, perché permette di proteggere i nostri servizi web senza la complessità di coinvolgere un Identity Provider.
Nel corso di quello script, siamo riusciti a configurare correttamente ASP.NET Core e a invocare il controller protetto tramite chiamata dal browser. Come fare però, quando la chiamata in realtà deve essere effettuata da un'altra applicazione, tramite HttpClient?
Immaginiamo allora di avere una seconda applicazione ASP.NET Core, che utilizzeremo come chiamante. Dobbiamo caricare anche qui il medesimo certificato e configurare HttpClientFactory:
var cert = new X509Certificate2(@"C:\[folder]\CertDemoClient.pfx", "0000"); builder.Services.AddHttpClient("ServerApi", client => { client.BaseAddress = new Uri("https://localhost:7105"); }).ConfigurePrimaryHttpMessageHandler(() => { var handler = new HttpClientHandler(); handler.ClientCertificates.Add(cert); return handler; });
Nel codice in alto, abbiamo definito un HttpClient chiamato "ServerApi" che punta al servizio che vogliamo invocare, il cui HttpMessageHandler conterrà il nostro certificato nella collection ClientCertificates.
Esso verrà quindi incluso in qualsiasi chiamata effettuata con questo HttpClient. Pertanto, non ci resta che sfruttarlo in un endpoint, facendo attenzione a specificare il nome corretto:
app.MapGet("/", async (IHttpClientFactory httpClientFactory) => { var client = httpClientFactory.CreateClient("ServerApi"); var result = await client.GetAsync("WeatherForecast"); result.EnsureSuccessStatusCode(); return await result.Content.ReadAsStringAsync(); });
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Aggiungere temi custom a Blazor
Autenticazione con Minimal API di ASP.NET Core 6
Effettuare un deployment differenziale con una GitHub Action
Gestire il breaking change di Entity Framework Core 7 con tabelle che usano identity e trigger
Ottimizzare il codice JavaScript con i Shorthand Patterns - terza parte
Nullish coalescing e decostruzione in JavaScript
Gestire gli errori in un servizio gRPC di ASP.NET Core
Innestare una query nel metodo Contains di Entity Framework Core
Introduzione al nuovo tipo TimeOnly di .NET
Test reporting in un workflow di GitHub
Ottimizzare il codice JavaScript con i Shorthand Patterns - prima parte
Scoprire le ottimizzazioni di Entity Framework Core in fase di scrittura di un solo record
I più letti di oggi
- Gestire il breaking change di Entity Framework Core 7 con tabelle che usano identity e trigger
- Leggere e scrivere su cookie tramite Blazor
- Realizzare applicazioni SaaS con ASP.NET Core e Azure
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Raggruppare i parametri di una minimal API in un singolo oggetto in ASP.NET Core