Le applicazioni multi-tier coinvolgono comunicazioni a diversi livelli. Ad esempio, il browser che comunica con le API Web e le API Web che comunicano con altre API Web per conto degli utenti e così via. Per abilitare la comunicazione sicura, i protocolli di autenticazione e autorizzazione potrebbero richiedere una gestione aggiuntiva.
È difficilmente gestibile poiché qualsiasi modifica nell'utilizzo dell'API si tradurrebbe in modifiche nella logica coinvolta con l'accesso autorizzato. Di conseguenza, ci saranno colli di bottiglia di test e distribuzione, soprattutto quando si tratta di microservices.
Per alleviare questo problema, Servizio token di sicurezza (STS) fornisce un repository centrale in cui è possibile scaricare la logica di autorizzazione distribuita tra i diversi componenti dell'applicazione. Principalmente, STS è responsabile dell'emissione di token e della convalida delle attestazioni per risolvere il problema dell'accesso con ambito alle risorse.
Esaminiamo il diagramma seguente per avere un'idea generale del servizio token di sicurezza utilizzato.
IdentityServer4 è un STS usato frequentemente in .NET Core applicazioni che implementano i protocolli OpenID Connect e OAuth 2.0. Esaminiamo il diagramma seguente per avere un'idea generale del servizio token di sicurezza utilizzato.
NCache Dettagli NCache con IdentityServer4 Chiavi della cache e panoramica dei dati
IdentityServer con NCache
L'API IdentityServer4 offre la flessibilità di utilizzare qualsiasi archivio personalizzato esterno, sia esso un database relazionale, a NoSQL soluzione, un file system o anche un archivio dati in memoria come NCache. Per questo, gli autori di IdentityServer4 hanno implementato Nucleo dell'Entity Framework (EF). il supporto per IdentityServer4 semplifica l'utilizzo di qualsiasi database come supporto di archiviazione per IdentityServer4 configurazione e dati operativi.
NCache, essendo una in-memory distribuita e scalabile negozio di valori-chiave, è perfetto per IdentityServer4. Può essere utilizzato con IdentityServer in uno dei seguenti modi.
- NCache può essere usato come un archivio cache per IdentityServer4 configurazione e dati operativi per velocizzare le operazioni tramite la memorizzazione nella cache in memoria e ridurre gli accessi al database.
- NCache può essere usato come un configurazione e archivio delle concessioni persistenti per aumentare ulteriormente le prestazioni eliminando il collo di bottiglia dovuto al recupero dei dati da un disco. Il contenuto in memoria della cache può quindi essere periodicamente persistente su disco, riducendo così drasticamente il tempo medio impiegato per ottenere i dati.
Puoi anche combinare e abbinare la cache e memorizzare i ruoli di NCache ad esempio, usalo come livello di memorizzazione nella cache per l'archivio di configurazione e come archivio autonomo per i dati operativi. Tutto questo viene implementato utilizzando IIdentityServerBuilder NCache metodi di estensione utilizzati durante l'ASP.NET Core iniezione di dipendenza.
- Archivio di configurazione: un archivio in cui vengono conservati i dati statici che non cambiano in quanto tali.
- Negozio operativo: un archivio in cui sono conservati i dati operativi su cui vengono eseguite le operazioni ed è più probabile che vengano modificati frequentemente.
Il vantaggio è che puoi avere il tuo archivio dati in memoria che produce risultati migliori e più rapidi. Entriamo lentamente nel dettaglio di come viene fatto, ma ci sono alcuni prerequisiti di cui prendersi cura prima di iniziare.
NCache Dettagli NCache con IdentityServer4 Chiavi della cache e panoramica dei dati
Pre-requisiti
- .NET Core 3.0 e 3.1 SDK e tempi di esecuzione.
- NCache Enterprise 5.0 SP1 o in esecuzione sui tuoi server.
- Fare riferimento a Soluzione GitHub per ottenere le informazioni sull'applicazione utilizzata. In tutto il blog, le modifiche al codice sono spiegate in base alla stessa applicazione.
Scenario 1: NCache come archivio di IdentityServer4 in memoria
È possibile memorizzare informazioni su client, risorse API, risorse di identità, ecc. (configurazioni) e/o concessioni persistenti e codici di flusso del dispositivo, ecc. (operazioni) durante l'utilizzo NCache come archivio di IdentityServer.
Ora vediamo dove NCache si adatta alla foto:
Per poter utilizzare NCache per i dati di configurazione e operativi:
Passo 1: Nel cs del tuo progetto, aggiungi il.Usa AvvioNCache>() metodo e aggiungi il codice seguente nel file StartupNcachecs file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); var builder = services.AddIdentityServer() .AddTestUsers(TestUsers.Users) .AddNCacheConfigurationStore(options => { options.CacheId = _configuration["CacheId"]; var serverList = _configuration["Servers"].Split(',') .Select(x => x.Trim()) .ToList() .Select(y => new NCacheServerInfo(y, 9800)) .ToList(); options.ConnectionOptions = new NCacheConnectionOptions { ServerList = serverList, EnableClientLogs = true, LogLevel = NCacheLogLevel.Debug }; }) //.. rest of the code } |
Passo 2: Nel appsettings.json file, modificare il valore di ID cache chiave per il nome della cache che stai utilizzando. Inoltre, per il multiplo Server chiavi, utilizzare un elenco separato da virgole di uno o più indirizzi IP appartenenti a NCache server che compongono il NCache grappolo.
1 2 3 4 |
{ "CacheId": "democache", "Servers": "20.200.20.45,20.200.20.50", } |
Passo 3: Esegui applicazioni IdentityServer, MvcClient, API, JavaScriptClient per vedere come NCache funziona come una configurazione di IdentityServer4 e un archivio operativo dopo essersi assicurati che la cache di dimostrazione utilizzata sia come archivio di configurazione che come archivio operativo sia in esecuzione e possa essere connessa all'applicazione di esempio IdentityServer.
Scenario 2: NCache come implementazione della cache IdentityServer4
NCacheLa funzionalità principale di è quella di memorizzare nella cache i dati persistenti nell'origine dati per un accesso più rapido e prestazioni migliori. Mentre puoi usare NCache come archivio dati, puoi anche utilizzare NCache tra il tuo datastore e l'applicazione memorizzando nella cache la configurazione e/o i dati operativi NCache mantenendolo anche nell'archivio dati.
Lascia che la figura mostri come NCache funziona come una cache con IdentityServer4.
Passo 1: Al fine di implementare NCache come archivio di configurazione, pur mantenendo la configurazione e i dati operativi nell'archivio dati, aggiungere Usa Startup>() metodo e aggiungi il codice seguente nel file AvvioEFCore.cs file.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
public void ConfigureServices(IServiceCollection services) { ... var builder = services.AddIdentityServer() .AddTestUsers(TestUsers.Users) .AddNCacheCaching(options => { options.CacheId = _configuration["CacheId"]; var serverList = _configuration["Servers"].Split(',') .Select(x => x.Trim()) .ToList() .Select(y => new NCacheServerInfo(y, 9800)) .ToList(); options.ConnectionOptions = new NCacheConnectionOptions { ServerList = serverList }; options.DurationOfBreakInSeconds = 120; }); //.. rest of the code } |
Passo 2: Nel appsettings.json file, modificare il valore di ID cache chiave per il nome della cache che utilizzerai. Inoltre, per il multiplo Server chiavi, utilizzare un elenco separato da virgole di uno o più indirizzi IP appartenenti a NCache server che compongono il NCache grappolo. Fornire inoltre la stringa di connessione di SQL Server.
1 2 3 4 5 6 7 8 |
{ "CacheId": "democache", "Servers": "20.200.20.45,20.200.20.50", "ConnectionStrings": { "db": "server=;database=IdentityServer4.EntityFramework;UserId=userid;Password=password;" } } |
Passo 3: Esegui applicazioni IdentityServer, MvcClient, API, JavaScriptClient per vedere come NCache opera come meccanismo di memorizzazione nella cache per l'archivio di configurazione, l'archivio di concessione persistente e l'implementazione predefinita di IProfileService. Assicurati che la cache usata come archivio di configurazione e cache dell'archivio concessioni persistente sia in esecuzione e possa essere connessa a Server di identità applicazione di esempio.
Conclusione
Per riassumere, IdentityServer esegue tutta l'autenticazione necessaria a ogni hop di rete nell'applicazione e NCache si adatta perfettamente per mantenere i dati di configurazione e funzionamento per un accesso più rapido. Non solo quello NCache può anche essere utilizzato come archivio dati e archiviare entrambi i tipi di dati in memoria, offrendoti la libertà di liberare la tua applicazione da qualsiasi altra fonte di dati. Ottieni tutto questo utilizzando i metodi di estensione forniti da NCache molto facilmente.
NCache Dettagli Scaricare NCache Confronto edizione