Utilisation d'IdentityServer4 sur ASP.NET Core 2. Deux clients pertinents pour ce cas d'utilisation utilisant ASP.NET MVC5.
EDIT : Utilisation de cookies pour l'authentification, flux implicite.
En utilisant le panneau "back-channel" comme ça :
* Il y a 4 applications impliquées - deux clients (appelons-les client A et client B), une instance d'IdentityServer et un serveur d'état pour garder la trace des demandes de déconnexion par le canal arrière.
- Le client A lance la déconnexion, invalide le cookie de connexion.
- Client Un utilisateur est redirigé vers le site /account/logout de IdentityServer avec un id_token correct.
- Le serveur d'identité invalide le cookie de connexion et appelle les actions de déconnexion par le canal arrière pour tous les clients connectés.
- L'action de déconnexion par le canal arrière du client B valide la demande et notifie la demande de déconnexion au serveur d'état.
- Lors de la demande suivante vers le client B, ce dernier interroge le serveur d'état et obtient des informations sur une demande de déconnexion en suspens, ce qui l'amène à invalider le cookie de déconnexion, et donc à réussir la déconnexion.
Le serveur d'état garde la trace de ces deux paramètres : sub
y sid
réclamations à partir de id_token.
Je rencontre le problème suivant :
Lorsque des utilisateurs se connectent à un client A, puis se rendent sur le client B et y effectuent la déconnexion, le client B est déconnecté, mais pas le client A jusqu'à la prochaine demande qui lui est adressée. Ainsi, si les utilisateurs décident de se connecter au client B avec un autre compte (ou le même, peu importe) et de naviguer ensuite vers le client A, le client A lancera la déconnexion parce qu'il y avait une demande de déconnexion en attente sur le serveur d'état, sans tenir compte du fait que les utilisateurs se sont reconnectés entre-temps.
Quelqu'un a-t-il une idée sur la façon d'éviter cela ?