Les applications multiniveaux impliquent des communications à différents niveaux. Par exemple, le navigateur communique avec les API Web et les API Web communiquent avec d'autres API Web au nom des utilisateurs, etc. Pour activer une communication sécurisée, les protocoles d'authentification et d'autorisation peuvent nécessiter une manipulation supplémentaire.
Il est difficilement maintenable car tout changement dans l'utilisation de l'API se traduirait par des changements dans la logique impliquée dans l'accès autorisé. Par conséquent, il y aura des goulots d'étranglement de test et de déploiement, en particulier lorsqu'il s'agit de microservices.
Pour pallier ce problème, Service de jeton de sécurité (STS) fournit un référentiel central où la logique d'autorisation répartie entre les différents composants de l'application peut être déchargée. STS est principalement responsable de l'émission de jetons et de la validation des revendications pour résoudre le problème de l'accès limité aux ressources.
Examinons le diagramme ci-dessous pour avoir une idée générale du service de jeton de sécurité utilisé.
Serveur d'identité4 est un STS fréquemment utilisé dans .NET Core applications qui implémentent les protocoles OpenID connect et OAuth 2.0. Examinons le diagramme ci-dessous pour avoir une idée générale du service de jeton de sécurité utilisé.
NCache Détails NCache avec IdentityServer4 Présentation des clés de cache et des données
Serveur d'identité avec NCache
L'API IdentityServer4 offre la flexibilité d'utiliser n'importe quel stockage externe personnalisé, qu'il s'agisse d'une base de données relationnelle, d'un NoSQL solution, un système de fichiers ou même un magasin de données en mémoire comme NCache. Pour cela, les auteurs d'IdentityServer4 ont implémenté Entity Framework (EF) Noyau prise en charge d'IdentityServer4, ce qui facilite l'utilisation de n'importe quelle base de données comme support de stockage pour IdentityServer4 données de configuration et de fonctionnement.
NCache, étant un système en mémoire distribué et évolutif magasin clé-valeur, convient parfaitement à IdentityServer4. Il peut être utilisé avec IdentityServer de l'une des manières suivantes.
- NCache peut être utilisé comme magasin de cache pour IdentityServer4 configuration et les données opérationnelles pour accélérer les opérations grâce à la mise en cache en mémoire et réduire les accès à la base de données.
- NCache peut être utilisé comme configuration et magasin de subventions persistant pour augmenter encore les performances en supprimant le goulot d'étranglement d'avoir à obtenir des données à partir d'un disque. Le contenu en mémoire du cache peut ensuite être conservé périodiquement sur le disque, réduisant ainsi considérablement le temps moyen nécessaire pour obtenir les données.
Vous pouvez également mélanger et assortir les rôles de cache et de stockage de NCache par exemple, utilisez-le comme couche de mise en cache pour le magasin de configuration et comme magasin autonome pour les données opérationnelles. Tout cela est implémenté à l'aide de IIdentityServerBuilder NCache méthodes d'extension utilisées pendant ASP.NET Core injection de dépendance.
- Magasin de configuration : un magasin où sont conservées des données statiques qui ne changent pas en tant que telles.
- Magasin opérationnel : un magasin où les données opérationnelles sont conservées sur lesquelles les opérations sont effectuées et sont plus susceptibles d'être fréquemment modifiées.
L'avantage est que vous pouvez avoir votre magasin de données en mémoire, ce qui donne des résultats meilleurs et plus rapides. Entrons lentement dans le détail de la façon dont cela est fait, mais il y a quelques prérequis à prendre en compte avant de se lancer.
NCache Détails NCache avec IdentityServer4 Présentation des clés de cache et des données
Conditions préalables
- .NET Core SDK 3.0 et 3.1 et les temps d'exécution.
- NCache Enterprise 5.0 SP1 ou au-delà s'exécutant sur votre (vos) serveur(s).
- Reportez-vous à Solution GitHub pour obtenir des informations sur l'application utilisée. Tout au long du blog, les changements de code sont expliqués selon la même application.
Scenario 1 : NCache en tant que magasin IdentityServer4 en mémoire
Vous pouvez stocker des informations sur les clients, les ressources d'API, les ressources d'identité, etc. (configurations), et/ou les autorisations persistantes et les codes de flux de périphérique, etc. (opérations) lors de l'utilisation NCache en tant que magasin IdentityServer.
Voyons maintenant où NCache correspond à l'image:
Pour utiliser NCache pour les données de configuration et de fonctionnement :
Étape 1: Dans le cs de votre projet, ajoutez le.UtiliserDémarrageNCache>() méthode et ajoutez le code suivant dans la DémarrageNcache.cs fichier.
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 } |
Étape 2: Dans le appsettings.json fichier, modifiez la valeur du ID de cache key au nom du cache que vous utilisez. De plus, pour les multiples Serveurs clés, utilisez une liste séparée par des virgules d'une ou plusieurs adresses IP appartenant au NCache serveurs constituant le NCache .
1 2 3 4 |
{ "CacheId": "democache", "Servers": "20.200.20.45,20.200.20.50", } |
Étape 3: Exécuter des applications IdentityServer, MvcClient, Api, JavaScriptClient pour voir comment NCache fonctionne comme un magasin de configuration et opérationnel IdentityServer4 après s'être assuré que le cache de démonstration utilisé à la fois comme magasin de configuration et magasin opérationnel est en cours d'exécution et peut être connecté à l'exemple d'application IdentityServer.
Scenario 2 : NCache comme implémentation du cache IdentityServer4
NCacheLa fonctionnalité principale de consiste à mettre en cache les données persistantes dans votre source de données pour un accès plus rapide et de meilleures performances. Alors que vous pouvez utiliser NCache comme magasin de données, vous pouvez également utiliser NCache entre votre magasin de données et l'application en mettant en cache la configuration et/ou les données opérationnelles dans NCache tout en le conservant dans le magasin de données.
Laissez la figure montrer comment NCache fonctionne comme un cache avec IdentityServer4.
Étape 1: Afin de mettre en œuvre NCache en tant que magasin de configuration tout en conservant la configuration et les données opérationnelles dans le magasin de données, ajoutez UtiliserStartup>() méthode et ajoutez le code suivant dans la StartupEFCore.cs fichier.
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 } |
Étape 2: Dans le appsettings.json fichier, modifiez la valeur du ID de cache key au nom du cache que vous utiliserez. De plus, pour les multiples Serveurs clés, utilisez une liste séparée par des virgules d'une ou plusieurs adresses IP appartenant au NCache serveurs constituant le NCache groupe. Fournissez également la chaîne de connexion du serveur SQL.
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;" } } |
Étape 3: Exécuter des applications Serveur d'identité, MvcClient, API, JavaScriptClient pour voir comment NCache fonctionne comme un mécanisme de mise en cache pour le magasin de configuration, le magasin de subventions persistant ainsi que l'implémentation par défaut d'IProfileService. Assurez-vous que le cache utilisé comme magasin de configuration et le cache de magasin de subventions persistant sont en cours d'exécution et peuvent être connectés au IdentitéServeur exemple d'application.
Conclusion
Pour résumer, IdentityServer effectue toutes les authentifications nécessaires à chaque saut de réseau dans votre application et NCache convient parfaitement pour conserver les données de configuration et de fonctionnement pour un accès plus rapide. Pas seulement ça NCache peut également être utilisé comme magasin de données et stocker les deux types de données en mémoire, ce qui vous donne la liberté de débarrasser votre application de toute autre source de données. Vous obtenez tout cela en utilisant les méthodes d'extension fournies par NCache très facilement.
NCache Détails Télécharger NCache Comparaison Des Éditions