Bei den mehrschichtigen Anwendungen handelt es sich um Kommunikation auf verschiedenen Ebenen. Beispielsweise kommuniziert der Browser mit den Web-APIs und Web-APIs kommunizieren im Namen der Benutzer mit anderen Web-APIs und so weiter. Um eine sichere Kommunikation zu ermöglichen, erfordern Authentifizierungs- und Autorisierungsprotokolle möglicherweise eine zusätzliche Handhabung.
Es ist kaum wartbar, da jede Änderung der API-Nutzung zu Änderungen in der Logik des autorisierten Zugriffs führen würde. Folglich wird es insbesondere bei der Bewältigung zu Test- und Bereitstellungsengpässen kommen Microservices.
Um dieses Problem zu lindern, Sicherheitstoken-Service (STS) bietet ein zentrales Repository, in das die auf die verschiedenen Komponenten der Anwendung verteilte Autorisierungslogik ausgelagert werden kann. STS ist hauptsächlich für die Ausgabe von Tokens und die Validierung von Ansprüchen verantwortlich, um das Problem des eingeschränkten Zugriffs auf Ressourcen zu lösen.
Schauen wir uns das Diagramm unten an, um einen Gesamtüberblick über den verwendeten Sicherheitstokendienst zu erhalten.
IdentityServer4 ist ein häufig verwendetes STS in .NET Core Anwendungen, die die Protokolle OpenID Connect und OAuth 2.0 implementieren. Schauen wir uns das Diagramm unten an, um einen Gesamtüberblick über den verwendeten Sicherheitstokendienst zu erhalten.
NCache Details NCache mit IdentityServer4 Cache-Schlüssel und Datenübersicht
IdentityServer mit NCache
Die IdentityServer4-API bietet die Flexibilität, jeden externen benutzerdefinierten Speicher zu verwenden, sei es eine relationale Datenbank usw NoSQL Lösung, ein Dateisystem oder sogar ein In-Memory-Datenspeicher NCache. Dafür haben die Autoren von IdentityServer4 implementiert Entity Framework (EF) Core Unterstützung für IdentityServer4, wodurch es sehr einfach ist, jede Datenbank als Speichermedium für den IdentityServer4 zu verwenden Konfigurations- und Betriebsdaten.
NCache, da es sich um einen verteilten, skalierbaren In-Memory handelt Schlüsselwertspeicher, passt hervorragend zu IdentityServer4. Es kann mit IdentityServer auf eine der folgenden Arten verwendet werden.
- NCache kann als verwendet werden Cache-Speicher für IdentityServer4 Konfigurations- und Betriebsdaten, um Vorgänge durch In-Memory-Caching zu beschleunigen und Datenbankzugriffe zu reduzieren.
- NCache kann als verwendet werden Konfiguration und persistenter Grant-Speicher um die Leistung weiter zu steigern, indem der Engpass beim Abrufen von Daten von einer Festplatte beseitigt wird. Der speicherinterne Inhalt des Caches kann dann regelmäßig auf der Festplatte gespeichert werden, wodurch die durchschnittliche Zeit zum Abrufen der Daten drastisch verkürzt wird.
Sie können auch die Cache- und Store-Rollen kombinieren und anpassen NCache Verwenden Sie es beispielsweise als Caching-Schicht für den Konfigurationsspeicher und als eigenständigen Speicher für Betriebsdaten. All dies wird mithilfe des IIdentityServerBuilder implementiert NCache Erweiterungsmethoden, die während ASP verwendet werden.NET Core Abhängigkeitsspritze.
- Konfigurationsspeicher: ein Speicher, in dem statische Daten gespeichert werden, die sich als solche nicht ändern.
- Betriebslager: Ein Speicher, in dem die Betriebsdaten gespeichert werden, über die Vorgänge ausgeführt werden und die mit größerer Wahrscheinlichkeit häufig geändert werden.
Der Vorteil besteht darin, dass Sie Ihre Daten im Arbeitsspeicher speichern können, was zu besseren und schnelleren Ergebnissen führt. Lassen Sie uns langsam ins Detail gehen, wie es gemacht wird, aber bevor Sie beginnen, müssen einige Voraussetzungen erfüllt sein.
NCache Details NCache mit IdentityServer4 Cache-Schlüssel und Datenübersicht
Die Anforderungen:
- .NET Core 3.0 und 3.1 SDK und Laufzeiten.
- NCache Enterprise 5.0 SP1 oder läuft auf Ihren Servern.
- Siehe die GitHub-Lösung um Informationen über die verwendete Anwendung zu erhalten. Im gesamten Blog werden die Codeänderungen entsprechend derselben Anwendung erläutert.
Szenario 1: NCache als In-Memory IdentityServer4 Store
Sie können während der Verwendung Informationen über die Clients, API-Ressourcen, Identitätsressourcen usw. (Konfigurationen) und/oder dauerhafte Gewährungen und Geräteflusscodes usw. (Vorgänge) speichern NCache als IdentityServer-Speicher.
Nun wollen wir sehen, wo NCache passt ins Bild:
Zu verwenden, um NCache für die Konfigurations- und Betriebsdaten:
Schritt 1: Im cs Ihres Projekts, fügen Sie die hinzu.UseStartupNCache>() Methode und fügen Sie den folgenden Code in die ein StartupNcache.cs Datei.
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 } |
Schritt 2: Im appsettings.json Datei, ändern Sie den Wert der Cache-ID Schlüssel zum Namen des Caches, den Sie verwenden. Außerdem für das Vielfache Fertige Server verwenden Sie eine durch Kommas getrennte Liste mit einer oder mehreren IP-Adressen, die zu gehören NCache Server, aus denen die NCache Cluster.
1 2 3 4 |
{ "CacheId": "democache", "Servers": "20.200.20.45,20.200.20.50", } |
Schritt 3: Führen Sie Anwendungen aus IdentityServer, MvcClient, API, JavaScriptClient um zu sehen wie NCache fungiert als IdentityServer4-Konfigurations- und Betriebsspeicher, nachdem sichergestellt wurde, dass der Demonstrationscache, der sowohl als Konfigurations- als auch als Betriebsspeicher verwendet wird, ausgeführt wird und mit der IdentityServer-Beispielanwendung verbunden werden kann.
Szenario 2: NCache als IdentityServer4-Cache-Implementierung
NCacheDie Kernfunktionalität besteht darin, die in Ihrer Datenquelle vorhandenen Daten zwischenzuspeichern, um einen schnelleren Zugriff und eine bessere Leistung zu ermöglichen. Während Sie verwenden können NCache als Ihren Datenspeicher können Sie auch verwenden NCache zwischen Ihrem Datenspeicher und der Anwendung, indem Sie die Konfiguration und/oder die Betriebsdaten zwischenspeichern NCache während es gleichzeitig im Datenspeicher bleibt.
Lassen Sie die Abbildung zeigen, wie NCache Funktioniert als Cache mit IdentityServer4.
Schritt 1: Um umzusetzen NCache als Konfigurationsspeicher und behält gleichzeitig die Konfigurations- und Betriebsdaten im Datenspeicher bei Verwenden SieStartup>() Methode und fügen Sie den folgenden Code in die ein StartupEFCore.cs Datei.
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 } |
Schritt 2: Im appsettings.json Datei, ändern Sie den Wert der Cache-ID Schlüssel zum Namen des Caches, den Sie verwenden werden. Darüber hinaus für das Vielfache Fertige Server verwenden Sie eine durch Kommas getrennte Liste mit einer oder mehreren IP-Adressen, die zu gehören NCache Server, aus denen die NCache Cluster. Geben Sie außerdem die Verbindungszeichenfolge des SQL Servers an.
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;" } } |
Schritt 3: Führen Sie Anwendungen aus IdentityServer, MvcClient, API, JavaScriptClient um zu sehen wie NCache fungiert als Caching-Mechanismus für den Konfigurationsspeicher, den persistenten Grant-Speicher sowie die IProfileService-Standardimplementierung. Stellen Sie sicher, dass der Cache, der als Konfigurationsspeicher und persistenter Gewährungsspeicher-Cache verwendet wird, ausgeführt wird und mit dem verbunden werden kann Identitätsserver Beispielanwendung.
Zusammenfassung
Zusammenfassend lässt sich sagen, dass IdentityServer bei jedem Netzwerk-Hop in Ihrer Anwendung die gesamte erforderliche Authentifizierung durchführt NCache Passt gut, um die Konfigurations- und Betriebsdaten für einen schnelleren Zugriff aufzubewahren. Nicht nur, dass NCache kann auch als Datenspeicher verwendet werden und beide Arten von Daten im Arbeitsspeicher speichern, sodass Sie Ihre Anwendung frei von jeder anderen Datenquelle machen können. All dies erreichen Sie, indem Sie die von bereitgestellten Erweiterungsmethoden verwenden NCache sehr leicht.
NCache Details Herunterladen NCache Editionsvergleich