Nello scorso script abbiamo mostrato come Glimpse sia uno strumento estremamente utile per monitorare il comportamento del nostro sito web. Per default, però, esso è attivo solo finché il sito risiede su localhost, ossia sulla nostra macchina di sviluppo.
Questa impostazione è determinata in base a una serie di policy che vengono valutate a runtime. In particolare, LocalPolicy è quella responsabile di disattivare Glimpse al di fuori di localhost, e può essere facilmente disabilitata modificando la sezione glimpse all'interno del web.config:
<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd"> <runtimePolicies> <ignoredTypes> <add type="Glimpse.AspNet.Policy.LocalPolicy, Glimpse.AspNet"/> </ignoredTypes> </runtimePolicies> </glimpse>
Dato che però Glimpse espone numerosi dettagli implementativi del nostro sito, non è il massimo far sì che tutti possano attivarlo o disattivarlo a piacimento, e magari recuperare informazioni sensibili sul codice che abbiamo realizzato. Un'idea, allora, può essere quella di restringerne l'utilizzo ai soli utenti amministratori.
Non esiste una policy specifica per questa regola, ma nulla ci vieta di crearne una personalizzata implementando l'interfaccia IRuntimePolicy:
using Glimpse.AspNet.Extensions; using Glimpse.Core.Extensibility; namespace WebApplication9 { public class AdministratorsOnlyPolicy : IRuntimePolicy { public RuntimeEvent ExecuteOn { get { return RuntimeEvent.EndRequest | RuntimeEvent.ExecuteResource; } } public RuntimePolicy Execute(IRuntimePolicyContext policyContext) { var context = policyContext.GetHttpContext(); return context != null && context.User.IsInRole("Administrator") ? RuntimePolicy.On : RuntimePolicy.Off; } } }
La nostra AdministratorsOnlyPolicy, secondo quando specificato dal metodo ExecuteOn, verrà invocata dal runtime in corrispondenza di ogni EndRequest, o quando proviamo ad accedere a Glimpse.axd (ExecuteResource).
Il metodo Execute implementa la logica tramite cui attivare o disattivare Glimpse. Nel nostro caso, ci limiteremo a valutare il principal corrente e verificare che appartenga al ruolo Administrator.
Non è necessaria alcuna registrazione per attivare questa policy: alla prima esecuzione, infatti, il runtime di Glimpse individua tutti gli IRuntimePolicy definiti e li attiva automaticamente, a meno che non appartengano alla lista di ignoreTypes che abbiamo definito in precedenza. Accedendo a Glimpse.axd, possiamo anche vedere una lista di tutte le policy correntemente attivate.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare Tailwind CSS all'interno di React: primi componenti
Creare un webhook in Azure DevOps
Usare il colore CSS per migliorare lo stile della pagina
Migliorare la scalabilità delle Azure Function con il Flex Consumption
Utilizzare Tailwind CSS all'interno di React: installazione
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Le novità di Angular: i miglioramenti alla CLI
Eseguire script pre e post esecuzione di un workflow di GitHub
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
I più letti di oggi
- Effettuare il download di un file via FTP con la libreria FluentFTP di .NET
- Debug di app .NET tramite snapshot con Application Insight
- Utilizzare le Fullscreen API di HTML5 in IE11
- Proteggere l'accesso ad una Azure Web e API App tramite Google
- Utilizzare .NET Core con le Azure Function
- Effettuare il redirect da HTTP a HTTPS con la Azure CDN
- Creare un package MTS con uno script ASP
- Autenticazione con Minimal API di ASP.NET Core 6
- Routing HTTP con i proxy delle Azure Function
- Convidere una share di rete tra VM di Azure