Comment déconnecter un autre utilisateur dans ASP.NET Core Identity

Comment puis-je déconnecter un autre utilisateur (pas celui actuellement connecté) dans ASP.NET Core Identity.

Je sais qu’il existe une méthode SignOutAsync() dans SignInManager , mais il ne semble pas y avoir de substitution permettant d’accepter l’utilisateur comme argument. Je cherche quelque chose comme:

 signInManager.SignOutAsync(user); 

Commencez par mettre à jour le timbre de sécurité de cet utilisateur:

 await userManager.UpdateSecurityStampAsync(user) 

Ensuite, cet utilisateur ne sera pas informé des modifications avant l’arrivée de SecurityStampValidationInterval . Donc, réglez-le sur Zero pour la déconnexion immédiate:

 services.AddIdentity(identityOptions => { // enables immediate logout, after updating the user's stat. identityOptions.SecurityStampValidationInterval = TimeSpan.Zero; } 

Mise à jour: pour ASP.NET Core Identity 2.x

 services.Configure(options => { // enables immediate logout, after updating the user's stat. options.ValidationInterval = TimeSpan.Zero; }); 

Je pense que vous pourriez trouver certaines fonctionnalités de révocation , qui rendent l’utilisateur déconnecté avec force. Il n’est pas facilement implémenté actuellement en tant que nature d’une connexion sans état et d’une authentification basée sur un jeton (ou sur une revendication).

Un utilisateur révoqué doit être accédé à un sharepoint terminaison de validation de jeton afin de vérifier si le jeton est valide ou non. Jusque-là, (1) l’utilisateur pourrait être affiché comme un utilisateur connecté (2), nous devons implémenter un client (application ou Web) pour accéder très fréquemment au sharepoint terminaison du jeton jusqu’à l’expiration ou la révocation du jeton.

SignIn / Out est limité à la scope de l’identité de l’utilisateur autorisé par jeton, de sorte que la solution viable consiste à invalider un jeton.