Comment déconnecter un utilisateur si on ne le connaît pas ?

D’accord, imaginons ce scénario simple :

  1. L’utilisateur A se connecte à mon site, puis clique sur « Forums ». Il est redirigé vers Discourse, qui rappelle mon site via SSO ; il est alors authentifié et automatiquement connecté à Discourse. Parfait, cela fonctionne.

  2. Un certain temps après, l’utilisateur A quitte l’ordinateur et sa session expire automatiquement. Il n’a jamais spécifiquement cliqué sur « Se déconnecter » ni dans mon application, ni sur Discourse.

  3. L’utilisateur B se connecte à mon site sur le même appareil, clique pour accéder aux forums. Comme Discourse considère toujours que l’utilisateur A est connecté, il ne déclenche pas de nouveau SSO, la session Discourse étant toujours active. L’utilisateur B se retrouve alors connecté à Discourse en tant que l’utilisateur A. :-\

Comment gérer ce scénario ?

Merci,
Eric

Vous pouvez configurer un appel API pour déconnecter automatiquement Discourse :

Bon, mais comment puis-je faire cela si l’utilisateur s’est « éloigné » de l’ordinateur et que sa session a expiré ? Peut-être s’agit-il davantage d’une question sur PHP (qui est le langage utilisé pour mon site principal)…

Cet astuce devrait toujours fonctionner :

@riking Je suis désolé, j’avais une question curieuse.

Comment des services comme Auth0 gèrent-ils la déconnexion automatique pour Discourse ?

Pourriez-vous préciser ce que vous entendez par là ? Quelle est la durée de session de votre application ? Comment gérez-vous l’expiration des sessions dans votre cas ?

Discourse dispose d’un paramètre maximum session age (durée maximale de session) qui, par défaut, est réglé à 1440 heures, soit 60 jours.

En résumé, si vous ne savez pas que l’utilisateur devant l’ordinateur a changé, il n’y a rien de simple que vous puissiez faire pour l’empêcher. Vous pourriez réduire la durée de session ou appeler périodiquement votre application pour déconnecter les utilisateurs, mais dans ce cas, si vos utilisateurs restent devant l’ordinateur pendant de longues périodes, ils se retrouveront à devoir repasser par le processus d’authentification.

Discourse peut étendre n’importe quel flux de connexion et de session que vous utilisez actuellement, mais sans plus d’informations sur ce qui précède, il est difficile de déterminer exactement où se situe le problème et quelles opportunités existent.

Merci pour votre réponse ! J’ai réalisé que ce problème repose finalement sur la gestion des utilisateurs sur le site principal.

Si l’utilisateur se déconnecte manuellement du site principal, je dois alors appeler Discourse (via l’API) pour le déconnecter également de là-bas.

Et si l’utilisateur ne se déconnecte pas mais que sa session expire, je dois appeler Discourse pour le déconnecter en même temps.

Et enfin : lorsqu’un utilisateur se déconnecte de Discourse en utilisant l’option « se déconnecter », je dois capturer cet événement (via un webhook) et le déconnecter également de mon site.

Ouah, l’intégration !