Tienda IdentityServer4 en memoria
NCache se puede utilizar como una capa de almacenamiento en caché sobre la configuración persistente de IdentityServer4 y los almacenes de datos operativos para que las operaciones puedan acelerarse a través del almacenamiento en caché en memoria y al mismo tiempo reducir los accesos a la base de datos.
Usar NCache como tienda IdentityServer4 significa almacenar información sobre los clientes, API, recursos de identidad, etc. Puede utilizar NCache como una sola tienda o con ambas. Ahora veamos a través del siguiente diagrama cómo NCache actúa como una tienda IdentitySever4:
Requisitos previos para configurar NCache como caché en memoria de IdentityServer4
- Ingrese al SDK de .NET 4.8 y API de tiempo de ejecución para IdentityServer4.
- El nombre de la caché y la información de la dirección IP deben cambiar según su aplicación.
- El caché debe estar ejecutándose.
- Para manejar cualquier excepción no vista, consulte el Solucionando Problemas .
Para utilizar NCache para la configuración y los datos operativos de IdentityServer4, realice estas configuraciones como se explica a continuación.
Cómo configurar NCache como tienda IdentityServer4
Paso 1:
- Instale el siguiente paquete NuGet en su aplicación:
- Incluya los siguientes espacios de nombres en el InicioNCache.cs archivo de su solicitud.
IdentityServer4.NCache.Entities
IdentityServer4.NCache.Mappers
IdentityServer4.NCache.Options
IdentityServer4.NCache.Stores.Interfaces
Paso 2:
En .cs archivo de su proyecto, agregue el .UseStartup<StartupNCache>
método. Entonces para NCache como almacén de configuración y operativo, agregue el siguiente código donde CacheId
es el nombre de su caché y Servers
son las direcciones IP de sus nodos en el InicioNCache.cs archivo.
advertencia
Si cliente.ncconf archivo en la carpeta del proyecto o en su directorio de instalación, es decir, %NCHOME%/config
no contiene la información sobre el clúster de caché, entonces el ConnectionOptions
debe contener la información de al menos un servidor en el NCache grupo. Esa información está disponible dentro del ServerList
propiedad de la NCacheConnectionOptions
clase.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
var builder = services.AddIdentityServer()
.AddTestUsers(TestUsers.Users)
// Add NCache as a configuration store
.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
};
})
// Add NCache as an operational store
.AddNCachePersistedGrantStore(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
};
})
.AddNCacheDeviceCodeStore(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
}
Note
Para garantizar que la operación sea a prueba de fallas, se recomienda manejar cualquier posible excepción dentro de su aplicación, como se explica en Manejo de fallas.
Paso 3:
Después de eso, en el configuración de aplicaciones.json archivo, modifique el valor del CacheId
clave para el nombre del caché que está utilizando. Además, para las claves de varios servidores, utilice una lista separada por comas de una o más direcciones IP que pertenezcan al NCache servidores que componen el NCache racimo.
{
"CacheId" : "demoCache",
"Servers" : "20.200.20.40,20.200.20.39",
}
Paso 4:
Ejecute sus aplicaciones IdentityServer
, MvcClient
, Api
, JavaScriptClient
para ver como NCache Opera como un almacén operativo y de configuración de IdentityServer4. Asegúrese de que el caché se esté ejecutando y pueda conectarse al IdentityServer
aplicación de muestra.
Recursos adicionales
NCache proporciona una aplicación de muestra para IdentityServer4 en GitHub.
Vea también
.NETO: Servidor de identidad4 espacio de nombres