Las aplicaciones de varios niveles involucran comunicaciones en diferentes niveles. Por ejemplo, el navegador se comunica con las API web y las API web se comunican con otras API web en nombre de los usuarios, etc. Para habilitar la comunicación segura, los protocolos de autenticación y autorización pueden requerir un manejo adicional.
Difícilmente se puede mantener ya que cualquier cambio en el uso de la API se traduciría en cambios en la lógica involucrada con el acceso autorizado. En consecuencia, habrá cuellos de botella en las pruebas y la implementación, especialmente cuando se trata de microservicios.
Para paliar este problema, Servicio de token de seguridad (STS) proporciona un repositorio central donde se puede descargar la lógica de autorización distribuida entre los diferentes componentes de la aplicación. Principalmente, STS es responsable de emitir tokens y validar reclamos para resolver el problema del acceso limitado a los recursos.
Miremos el diagrama a continuación para tener una idea general del servicio de token de seguridad que se está utilizando.
Servidor de identidad4 es un STS de uso frecuente en .NET Core aplicaciones que implementan los protocolos OpenID connect y OAuth 2.0. Miremos el diagrama a continuación para tener una idea general del servicio de token de seguridad que se está utilizando.
NCache Detalles NCache con IdentityServer4 Claves de caché y descripción general de los datos
Servidor de identidad con NCache
IdentityServer4 API brinda la flexibilidad de usar cualquier almacenamiento personalizado externo, ya sea una base de datos relacional, un NoSQL solución, un sistema de archivos o incluso un almacén de datos en memoria como NCache. Para eso, los autores de IdentityServer4 han implementado Núcleo de Entity Framework (EF) soporte para IdentityServer4, lo que facilita el uso de cualquier base de datos como medio de almacenamiento para IdentityServer4 configuración y datos operativos.
NCache, siendo un in-memory distribuido y escalable tienda de valor clave, es ideal para IdentityServer4. Se puede usar con IdentityServer de cualquiera de las siguientes maneras.
- NCache Puede usarse como un almacén de caché para IdentityServer4 configuración y datos operativos para acelerar las operaciones a través del almacenamiento en caché en memoria, así como para reducir las visitas a la base de datos.
- NCache Puede usarse como un almacén de concesión persistente y de configuración para aumentar aún más el rendimiento al eliminar el cuello de botella de tener que obtener datos de un disco. El contenido en memoria de la memoria caché se puede almacenar periódicamente en el disco, lo que reduce drásticamente el tiempo promedio necesario para obtener los datos.
También puede mezclar y combinar los roles de almacenamiento y caché de NCache por ejemplo, utilícelo como una capa de almacenamiento en caché para el almacenamiento de configuración y como un almacenamiento independiente para los datos operativos. Todo esto se implementa usando el IIdentityServerBuilder NCache métodos de extensión utilizados durante ASP.NET Core inyección de dependencia.
- Almacén de configuración: un almacén donde se guardan datos estáticos que no cambian como tales.
- Tienda operativa: un almacén donde se guardan los datos operativos en los que se realizan las operaciones y es más probable que se modifiquen con frecuencia.
La ventaja de esto es que puede tener su almacén de datos en la memoria, lo que produce resultados mejores y más rápidos. Profundicemos lentamente en los detalles de cómo se hace, pero hay algunos requisitos previos que deben tenerse en cuenta antes de comenzar.
NCache Detalles NCache con IdentityServer4 Claves de caché y descripción general de los datos
Pre-requisitos
- .NET Core SDK 3.0 y 3.1 y tiempos de ejecución.
- NCache Enterprise 5.0 SP1 o en adelante ejecutándose en su(s) servidor(es).
- Para obtener más detalles sobre cómo diseñar y realizar los esfuerzos de seguimiento y evaluación, refierase a Solución de GitHub para obtener la información sobre la aplicación que se está utilizando. A lo largo del blog se explican los cambios de código según la misma aplicación.
Escenario 1: NCache como un almacén IdentityServer4 en memoria
Puede almacenar información sobre los clientes, recursos de API, recursos de identidad, etc. (configuraciones) y/o permisos persistentes y códigos de flujo de dispositivo, etc. (operaciones) mientras utiliza NCache como la tienda IdentityServer.
Ahora veamos dónde NCache encaja en la imagen:
Para usar NCache para la configuración y los datos operativos:
Paso 1: En cs de su proyecto, agregue el.UseStartupNCache> () método y agregue el siguiente código en el InicioNcache.cs archivo.
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 } |
Paso 2: En configuración de aplicaciones.json archivo, modifique el valor del ID de caché clave al nombre de la memoria caché que está utilizando. Además, para los múltiples Servidores claves, utilice una lista separada por comas de una o más direcciones IP pertenecientes a la NCache servidores que componen el NCache racimo.
1 2 3 4 |
{ "CacheId": "democache", "Servers": "20.200.20.45,20.200.20.50", } |
Paso 3: Ejecutar aplicaciones IdentityServer, MvcClient, Api, JavaScriptClient para ver como NCache funciona como un almacén operativo y de configuración de IdentityServer4 después de asegurarse de que la memoria caché de demostración utilizada como almacén operativo y de configuración se está ejecutando y se puede conectar a la aplicación de ejemplo de IdentityServer.
Escenario 2: NCache como implementación de caché de IdentityServer4
NCacheLa funcionalidad principal de es almacenar en caché los datos que persisten en su fuente de datos para un acceso más rápido y un mejor rendimiento. Si bien puedes usar NCache como su almacén de datos, también puede utilizar NCache entre su almacén de datos y la aplicación almacenando en caché la configuración y/o los datos operativos en NCache mientras que también lo mantiene en el almacén de datos.
Deje que la figura demuestre cómo NCache funciona como caché con IdentityServer4.
Paso 1: Para implementar NCache como un almacén de configuración al tiempo que conserva la configuración y los datos operativos en el almacén de datos, agregue UseStartup> () método y agregue el siguiente código en el InicioEFCore.cs archivo.
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 } |
Paso 2: En configuración de aplicaciones.json archivo, modifique el valor del ID de caché clave para el nombre del caché que usará. Además, para los múltiples Servidores claves, utilice una lista separada por comas de una o más direcciones IP pertenecientes a la NCache servidores que componen el NCache grupo. Además, proporcione la cadena de conexión de 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;" } } |
Paso 3: Ejecutar aplicaciones IdentityServer, MvcClient, API, JavaScriptClient para ver como NCache funciona como un mecanismo de almacenamiento en caché para el almacén de configuración, el almacén de concesión persistente y la implementación predeterminada de IProfileService. Asegúrese de que la memoria caché utilizada como almacén de configuración y la memoria caché del almacén de concesión persistente se estén ejecutando y se puedan conectar a la servidor de identidad aplicación de muestra.
Conclusión
Para resumir todo, IdentityServer realiza toda la autenticación necesaria en cada salto de red en su aplicación y NCache encaja muy bien para mantener los datos de configuración y operación para un acceso más rápido. No solo eso NCache también se puede usar como su almacén de datos y almacenar ambos tipos de datos en la memoria, lo que le brinda la libertad de librar a su aplicación de cualquier otra fuente de datos. Obtiene todo esto utilizando los métodos de extensión proporcionados por NCache muy facilmente.
NCache Detalles Descargar NCache Comparación de ediciones