Timeout de session

Je comprends votre raisonnement, Stephen, mais ce n’est pas alarmiste.

Les professionnels de l’informatique font face quotidiennement à des utilisateurs non avertis et/ou ce qu’on appelle des « utilisateurs incompétents ». Nous tentons de mettre en place des systèmes capables de gérer toutes les éventualités, ce qui n’est pas facile. L’identité est un enjeu majeur aujourd’hui, et c’est uniquement lors des tests que nous avons découvert ce problème. Un avertissement préalable aurait été apprécié, surtout considérant que ce sujet a été discuté (et résolu une fois) depuis 2016.

J’espérais avoir manqué quelque chose ou qu’une mauvaise configuration fût en cause, mais je sais maintenant que le système fonctionne comme prévu. Nous examinerons des solutions externes pour contourner ce problème et les documenterons pour nos utilisateurs. Espérons qu’à un moment donné, d’autres feront pression pour que ce problème soit résolu au sein de Discourse.

Mais que se passe-t-il si l’utilisateur oublie de fermer le navigateur ? Comment cela fonctionne-t-il ?

Je suis curieux cependant @falco, pourquoi le correctif de 2016 a-t-il été révoqué ? Est-ce un changement dangereux ?

Quelques points pertinents.

Je suis toutefois assez choqué par certains de vos exemples :

Hôpitaux : Ceux dans lesquels j’ai été ces dernières années ont absolument des verrouillages uniques, au point que l’infirmière qui effectue des analyses de sang doit se reconnecter après s’être éloignée pendant quelques secondes.

Aux urgences, il peut exister certains systèmes spécialisés ayant accès à des données pertinentes pour les urgences, mais ils ne devraient pas avoir accès aux informations d’identification personnelle (PII) ni au forum de discussion du service.

Bibliothèque :
Toutes mes bibliothèques publiques locales (y compris dans certains très petits villages avec du personnel peu familier avec la technologie) ont un identifiant de connexion générique (identique pour tous les usagers, affiché directement sur l’écran). Elles appliquent également une politique de redémarrage en cas d’inactivité, et tout le monde, y compris les enfants, est censé s’y conformer. La séquence de redémarrage inclut l’effacement automatique de l’historique du navigateur, du cache et des cookies.

Je ne dis pas qu’une politique plus rigoureuse sur le plan des discussions serait mauvaise ; c’est simplement que certaines des situations « déclenchantes » listées dans ce sujet m’inquiètent, car attribuer à tort des publications sur un forum est le moindre de leurs problèmes.

1 « J'aime »

Voici la chronologie :

  • 2012 à mai 2016 : Le cookie de session de Discourse est toujours défini pour une durée illimitée.

  • Mai 2016 à juillet 2016 : Le cookie de session de Discourse est défini par défaut pour une durée illimitée, mais un paramètre du site peut le faire disparaître à la fermeture du navigateur.

  • Juillet 2016 à aujourd’hui : Le cookie de session de Discourse est défini pour 1440 heures et se rafraîchit lors de chaque utilisation. Un paramètre du site permet de contrôler la durée maximale de vie. Le paramètre de cookie de session du navigateur a été supprimé.

Il a été principalement supprimé car

Je comprends que le partage d’ordinateurs avec des inconnus soit un concept très étranger dans certaines parties du monde, encore plus avec les appareils personnels mobiles et maintenant avec la COVID-19, mais c’est très courant dans certains endroits comme les bibliothèques scolaires, les lieux de travail, etc.

La plupart du temps, les utilisateurs éteignent l’ordinateur après l’avoir utilisé. L’extinction de l’ordinateur ferme le navigateur, ce qui met indirectement fin à la session connectée dans les applications web.

Lorsque le prochain employé arrive pour le prochain poste, l’ordinateur est redémarré et le navigateur ne contiendra plus les cookies basés sur la session.

1 « J'aime »

Exact, mais je pense aussi que définir cette valeur sur 0 pourrait éventuellement (si cela ne cause pas trop de problèmes de support ou n’est pas trop techniquement complexe) activer le comportement « le cookie ne fonctionne que pour la durée de la session du navigateur ». La description du paramètre du site pourrait donc l’indiquer.

âge maximum de la session [par défaut 1440 heures]

L’utilisateur restera connecté pendant n heures depuis sa dernière visite. Lorsqu’il est défini sur 0, l’utilisateur sera déconnecté lorsque le navigateur sera fermé.

3 « J'aime »

Hôpitaux : Je ne partage que ce que je sais être fait par expérience. Je reconnais que les écrans se verrouillent rapidement, mais cela ne correspond pas à une déconnexion du navigateur, encore moins à celle de l’utilisateur du système d’exploitation. Pouvez-vous imaginer ce que les gens feraient si l’ordinateur devait se connecter, appliquer les stratégies, configurer les connexions réseau, le tout avant de charger une application pour accomplir ce que les médecins et les infirmières doivent faire pendant qu’un patient est en train de mourir ? De même, les connexions n’utilisent généralement pas un nom d’utilisateur et un mot de passe, mais plutôt une carte d’identité accompagnée d’un court code PIN, pour la même raison. Les urgences, les blocs opératoires et la plupart des autres salles doivent toujours documenter les informations des patients ; là où j’ai travaillé, cela a été cohérent partout.

Bibliothèques : Des stratégies de redémarrage à la déconnexion existent et sont efficaces tant que les administrateurs vident manuellement les caches de tout ce qui se trouve sur la machine, mais j’ai vu tout autant d’endroits faire autrement (c’est l’une des nombreuses raisons pour lesquelles je n’ai jamais utilisé de postes de travail partagés, avec mes identifiants, jamais, en aucun cas). J’ai vu le même dispositif malheureux dans les hôtels et les cybercafés (ou les cafés) régulièrement, pour ce que cela vaut.

Il me semble étrange qu’une application prenne par défaut ce paramètre pour tous les utilisateurs dans toutes les installations. La sécurité n’est pas l’objectif principal de la plupart des gens lorsqu’ils configurent d’abord leurs ordinateurs, et la complexité est telle que c’est souvent le métier à temps plein de certains professionnels. Ceux qui configurent des ordinateurs pour le public devraient mieux savoir, mais les navigateurs ont l’idée des cookies de session pour faciliter aux développeurs d’applications la gestion de sessions lorsque cela est intuitif pour les utilisateurs.

Exiger que les utilisateurs comprennent qu’ils doivent manuellement effacer les cookies d’un site pour se déconnecter, alors que de nombreux sites expireront la session et la termineront également à la fermeture du navigateur, semble exiger trop des gens. Ne pas permettre l’alternative du tout, obligeant ainsi un utilisateur à se souvenir d’utiliser le lien de déconnexion spécifique de Discourse, devient un problème lorsque les utilisateurs manquent ce lien pour une raison quelconque ; à l’esprit :

L’utilisateur quitte Discourse en suivant un lien.
L’utilisateur quitte Discourse parce qu’il utilise l’onglet pour aller ailleurs explicitement.
L’utilisateur ferme l’onglet à la hâte pour se rendre à un cours, une réunion, etc.
Le navigateur plante pour une raison quelconque.
L’implémenteur SSO utilise SAML pour la connexion, mais ne sait pas que l’application nécessite une déconnexion explicite pour tuer la session de l’application.

De plus, deux (2) mois semblent être une DURÉE VRAIMENT LONGUE pour une persistance de connexion. Je sais que certains autres sites le font aujourd’hui, ou même plus longtemps, mais les utilisateurs peuvent généralement contrôler cela via ces cases à cocher « Ordinateur public », ce qui ne s’applique pas avec SSO, ou peut-être pas du tout (je ne suis pas un expert de Discourse).

Juste quelques réflexions supplémentaires à prendre en compte.

J’ai aussi ce problème et je ne sais pas comment le résoudre.

Merci pour cela @codinghorror. Quel serait le processus et les délais pour que cela soit évalué et mis en œuvre ?

Je ne sais pas, cela dépend de la difficulté technique du changement. @sam, qu’en penses-tu concernant la difficulté de ce qui est proposé dans mon message ci-dessus ?

Je pense que ce serait aussi une fonctionnalité intéressante, car elle permettrait de savoir qui est réellement en ligne et qui est simplement absent.

Nous avons vraiment besoin d’un nouveau paramètre de site ici, car c’est conceptuellement découplé et cela rendrait le code difficile à comprendre.

Plus précisément, nous devrions ajouter des minimums ici :

Et dans quelques autres endroits pour garantir que le code continue de fonctionner.

Le paramètre que nous souhaitons est un réglage discret du type « déconnecter automatiquement les utilisateurs lorsque le navigateur est fermé ».

La durée de session s’applique toujours, même si vous utilisez des cookies de session (c’est-à-dire en omettant l’attribut expires).

Par exemple, vous pourriez dire :

  1. Si une personne ferme son ordinateur portable puis le rallume 3 heures plus tard, elle doit être déconnectée.
  2. Si une personne quitte Chrome, elle doit être déconnectée.

Ce sont des préoccupations différentes.

Peut-être ajouter persistent_sessions avec la valeur par défaut true ? « Lorsqu’il est défini sur true, la session est conservée lorsque le navigateur est fermé ». Ce changement prend environ 20 minutes.

4 « J'aime »

Ok, si une configuration de site distincte est préférable et qu’il s’agit d’un changement facile à effectuer en 20 minutes, alors je dis qu’on y va.

2 « J'aime »

Peut-être qu’à l’avenir, cette bonne idée pourrait être étendue à un paramètre « par utilisateur » au lieu d’un paramètre uniquement « par site » ?

1 « J'aime »

Ceci est désormais configuré par site.

https://review.discourse.org/t/feature-add-support-for-not-persistent-sessions/15171

À mon sens, il s’agit vraiment d’un choix administratif. C’est une fonctionnalité de sécurité. À long terme, nous pourrions envisager une liste blanche d’adresses IP contournant cette limitation (par exemple, les ordinateurs du réseau d’entreprise restent connectés, tandis que ceux situés à l’extérieur sont automatiquement déconnectés).

4 « J'aime »

Je pense que, par nature, cette demande concerne une fonctionnalité par utilisateur.

Certains utilisateurs sont sur leurs ordinateurs à domicile ou au bureau et n’ont pas besoin que les cookies expirent ; c’est donc à eux de choisir.

D’autres utilisateurs peuvent être des « nomades » dans des cafés sur des ordinateurs partagés, et ils souhaitent que leurs sessions expirent.

Cette fonctionnalité vise la sécurité des comptes utilisateurs, c’est pourquoi ce paramètre a généralement été mis en œuvre sous forme de préférence utilisateur ou de case à cocher lors de la connexion.

vBulletin, par exemple, disposait de cette fonctionnalité par défaut il y a plus d’une décennie ; lors de la connexion, nous cochions simplement une case si nous, « l’utilisateur », souhaitions que notre session persiste.

La « sécurité » concerne les comptes utilisateurs, c’est pourquoi il s’agissait généralement d’un paramètre par utilisateur par le passé, pour information.

Mise à jour : Lorsqu’un utilisateur possède un compte privilégié (administrateur, modérateur, leader, etc.), se pose également la question plus large de la sécurité globale du site.

2 « J'aime »

J’ai vu cela mis en œuvre sur de très nombreux sites. L’implémentation typique est :

Garder ma session active pendant 30 jours

[ SE CONNECTER ]

Je ne sais pas quand nous aborderons cela, mais lorsque nous le ferons, nous exigerons probablement un paramètre du site pour activer cette fonctionnalité. Il y a des complications concernant l’endroit même où afficher une telle case à cocher si les connexions via des réseaux sociaux sont activées.

5 « J'aime »

Merci à tous, votre aide et votre compréhension sont très appréciées.

1 « J'aime »

Merci.

Oui, les connexions sociales n’ont jamais été “notre tasse de thé” en raison du suivi comportemental ; mon point de vue est donc beaucoup plus restreint que votre exigence beaucoup plus vaste et complexe de prise en charge des réseaux sociaux.

Merci pour tout le bon travail de votre équipe. Bravo.

4 « J'aime »

Tout d’abord : un grand merci pour la correction rapide. J’ai cependant une question : serait-il possible de transformer cela en paramètre par utilisateur avec une valeur par défaut spécifique, afin que les utilisateurs puissent désactiver cette option dans leurs préférences ?

1 « J'aime »

C’est exactement ce qui a été évoqué ci-dessus comme travail futur possible, car cela demande plus d’efforts et soulève certains problèmes de conception d’interface utilisateur délicats.

De plus, nous souhaitons laisser cette fonctionnalité disponible pendant un certain temps pour voir si quelqu’un détecte un problème technique lié à la manière dont nous l’avons mise en œuvre.

3 « J'aime »