¿Es posible desconectar a un usuario en IdentityServer4 como un usuario diferente?
El flujo que estoy intentando entender es el siguiente:
1) El usuario A inicia sesión en el cliente A
2) El cliente A redirige al Servidor de Identidad para autenticar al usuario
3) después de la autenticación, el cliente A gestiona la información del usuario en su propio sistema
4) El usuario A resulta ser un “actor malintencionado”
5) El usuario Admin accede a la Herramienta de Administración de IdentityServer (una aplicación cliente diferente para gestionar IdentityServer, incluidos los usuarios).
6) El usuario Admin realiza una acción para “revocar” al usuario A
7) Se realiza una llamada a la parte trasera del IdentityServer desde la herramienta de administración donde el usuario A tiene una propiedad “Habilitado” que se establece en falso.
En este punto del flujo, quiero sacar al usuario del cliente A desde la parte trasera del IdentityServer.
Más contexto:
IdentityServer utiliza cookies en el navegador del cliente para mantener la “sesión” (no estoy seguro si esa es la palabra correcta porque en realidad no se está gestionando ningún estado).
También utiliza cookies para la opción de “recordarme”.
¿Hay alguna forma de eliminar la cookie del IdentityServer desde la parte trasera? ¿O notificar al cliente que el usuario A ya no tiene una autenticación válida para que pueda realizar HttpContext.SignOutAsync()?
Estaba revisando este enlace:
davy.ai
Para expulsar a UserA de ClientA desde el back-end de IdentityServer, se puede utilizar el punto final de cierre de sesión de IdentityServer. Este punto final se utiliza para iniciar el proceso de cierre de sesión del cliente y se puede llamar desde el back-end de IdentityServer.
Para utilizar el punto final de cierre de sesión, es necesario hacer una solicitud POST al punto final de cierre de sesión de IdentityServer con el ID de sesión del usuario, el ID de cliente y la URL de redireccionamiento. El ID de sesión se almacena típicamente en una cookie en el navegador del usuario, y el ID de cliente y la URL de redireccionamiento deben ser proporcionados por ClientA.
Una vez que se llama al punto final de cierre de sesión, IdentityServer borrará la sesión del usuario y eliminará cualquier cookie asociada. Luego, ClientA debería redireccionar al usuario a su propia página de inicio de sesión o a otra página apropiada.
Aquí hay un ejemplo de fragmento de código que demuestra cómo llamar al punto final de cierre de sesión en C#:
Tenga en cuenta que este código asume que el ID de sesión se almacena en una cookie llamada “session-id”. Es posible que necesite ajustar este código según su escenario específico.
Alternativamente, si desea notificar a ClientA que UserA ya no debe tener una autenticación válida para que pueda realizar HttpContext.SignOutAsync(), puede utilizar un punto final de revocación de token. IdentityServer proporciona un punto final de revocación de token que se puede utilizar para revocar el token de un usuario.
Para utilizar el punto final de revocación de token, es necesario hacer una solicitud POST al punto final de revocación de token con el token de acceso o el token de actualización del usuario, la pista de tipo de token y las credenciales del cliente.
Aquí hay un ejemplo de fragmento de código que demuestra cómo llamar al punto final de revocación de token en C#:
Tenga en cuenta que este código asume que tiene acceso al token de acceso o al token de actualización de UserA. Es posible que necesite ajustar este código según su escenario específico. Además, tenga en cuenta que revocar un token afectará a todos los clientes que estén utilizando el token, no solo a ClientA.</string,></string,></string,></string,></string,></string,></string,>