Este team de expertos luego de ciertos días de investigación y de recopilar de información, dieron con la solución, nuestro deseo es que te sea de gran utilidad en tu trabajo.
Solución:
ASP.NET Core proporciona una interfaz ITicketStore que le permite controlar el almacenamiento de sesiones de usuario. Una vez que proporcione una clase que implemente esta interfaz y la registre, llamará a su clase cuando se creen o verifiquen las sesiones, que luego puede almacenar en una base de datos como desee, incluida la adjuntación de metadatos arbitrarios como la identificación del navegador, etc.
Ahora que tiene sesiones de usuario en su base de datos, puede consultarlas por separado y revocarlas según sea necesario en otra lógica, incluso durante los inicios de sesión. Dado que ahora proporciona los datos de la sesión, simplemente eliminar el registro cierra efectivamente la sesión del usuario. Tenga en cuenta que si usa cualquier capa de almacenamiento en caché para reducir las solicitudes de la tienda, también deberá eliminar las copias almacenadas en caché.
Tenga en cuenta que esto es independiente de IdentityServer y ocurre con el mismo ASP.NET Core.
Este es un buen tutorial que me ayudó a implementar esto en mi aplicación.
Una muestra de cómo se ve registrarse en Startup, donde PersistentTicketStore
es mi implementación:
// Persistent ticket/cookie store to provide durable user sessions
services.AddSingleton();
services.AddSingleton();
services.AddOptions(CookieAuthenticationDefaults.AuthenticationScheme)
.Configure((options, store) => options.SessionStore = store);
Puntuaciones y comentarios
Si te ha sido útil este post, sería de mucha ayuda si lo compartieras con otros juniors así contrubuyes a extender este contenido.