Contourner l'authentification unique (SSO) en ajoutant un e-mail inconnu au groupe

Supposons qu’un site ait l’authentification unique (SSO) activée.

Lors de l’ajout en masse d’utilisateurs à un groupe via l’interface décrite ici, si une adresse e-mail de la liste saisie n’existe pas encore sur Discourse, un e-mail d’invitation est envoyé.

Si vous cliquez sur le lien, vous êtes redirigé vers une page de création de compte au sein de Discourse :

Si vous remplissez le formulaire, un compte est créé. Ce compte créé ne contient aucune information SSO.

Je pense qu’il est assez évident pourquoi cela pose problème :

  • Contourner notre système d’authentification SSO est très grave.
  • Sans avertissement indiquant que « X personnes vont recevoir un e-mail », j’ai involontairement envoyé des spams à des personnes car je n’avais pas réalisé que des messages étaient envoyés.

Comportement attendu :

  • Lors de l’ajout en masse à un groupe, si le SSO est activé, ignorer toutes les adresses e-mail qui ne sont pas déjà présentes sur le site.
7 « J'aime »

Merci de nous avoir signalé ce problème. Je parviens à le reproduire sur mon site de développement. Lorsque SSO est activé, toute adresse e-mail qui n’est pas déjà présente sur le site doit être ignorée si elle est ajoutée à un groupe. Nous allons corriger ce problème. Désolé pour les désagréments causés.

8 « J'aime »

Corrigé dans PR #11950 et PR #11951. Merci pour le signalement ! :smiley:

7 « J'aime »

Ce sujet a été automatiquement fermé 24 heures après la dernière réponse. De nouvelles réponses ne sont plus autorisées.

@Grayden_Shand En fait, nous envisageons actuellement d’ajouter l’authentification SSO sur la page de récupération des invitations. Lors de la récupération de l’invitation, l’utilisateur devra s’authentifier via SSO au lieu de remplir le formulaire d’inscription. Cela correspond-il à votre cas d’usage ?

@sam Je réfléchis au flux d’invitation et je ne suis pas sûr de savoir si l’adresse e-mail à laquelle l’invitation a été envoyée doit correspondre à l’e-mail SSO. Il semble que nous puissions l’imposer pour les invitations basées sur l’e-mail, mais pas pour celles basées sur les liens. Qu’en pensez-vous ?

3 « J'aime »

Oui, nous devons l’imposer, en particulier pour les sites qui nécessitent une validation du compte.

Vous pouvez donc activer l’authentification via Facebook, désactiver l’authentification locale et continuer à intégrer des utilisateurs.

Cependant, les liens d’invitation (évidemment) échappent à cette règle car ils ne sont pas associés à un e-mail.

1 « J'aime »

Pour notre cas d’usage, il serait beaucoup mieux de pouvoir supprimer entièrement les e-mails d’invitation. Pour la plupart de nos sites (communautés temporaires pour des cours en ligne), la fenêtre d’inscription est limitée (et payante). Ainsi, je imagine qu’une personne recevant une invitation pour le site, puis se présentant pour constater qu’elle ne peut plus vraiment rejoindre, serait frustrée. Il n’y a vraiment aucune situation où nous souhaitons qu’une personne reçoive une invitation pour l’un de nos sites.

Si vous décidez de poursuivre dans cette direction, je vous demanderais également d’ajouter un avertissement du type : « Vous êtes sur le point d’envoyer un e-mail à XX personnes qui ne sont pas des utilisateurs de votre site : bob@example.com, alice@example.com, … ». Cela nous permettrait de trouver ces utilisateurs et de les retirer de la liste d’ajout en masse.

Seriez-vous en mesure d’utiliser des liens d’invitation pour votre cas d’usage ? De cette façon, personne ne reçoit d’e-mail et vous pouvez définir une date d’expiration.

Je propose toujours un mode « ninja » permettant de contourner l’envoi d’e-mails, afin que vous puissiez ajouter un grand nombre d’adresses à une liste autorisée. Cependant, je me demande si la fonctionnalité de lien d’invitation ne répond pas déjà à votre besoin ici.

1 « J'aime »

Je ne pense pas, mais peut-être que je n’ai pas bien compris la question. Laissez-moi vous expliquer comment nous utilisons Discourse, la fonctionnalité SSO, et pourquoi j’ai initialement rencontré ce bug.

Nous exploitons une plateforme d’apprentissage en ligne qui utilise un forum Discourse temporaire pour chaque session d’atelier (cours).

Nous utilisons SSO avec un système d’authentification personnalisé pour deux raisons :

  1. afin qu’un utilisateur n’ait besoin de créer qu’un seul jeu d’identifiants pour accéder à n’importe quel cours auquel il est inscrit.
  2. pour appliquer des politiques déterminant qui est autorisé à accéder à chaque forum Discourse, en fonction de données arbitraires dans notre base de données. Par exemple, dans notre point de terminaison SSO de Discourse, nous vérifions que l’utilisateur a une inscription valide et que la date se situe dans les limites de nos dates d’ouverture et de fermeture.

J’ai rencontré ce bug ci-dessus lorsque nous voulions créer un groupe dans un atelier uniquement pour les personnes inscrites à un autre (comme un groupe d’anciens élèves). J’ai donc ajouté la liste complète des participants d’un autre atelier dans la fenêtre modale d’ajout en masse, et j’ai accidentellement envoyé des invitations à toutes les personnes de cette liste qui n’étaient pas inscrites à l’atelier actuel.

Ainsi, nous n’utiliserions jamais la fonctionnalité d’invitation de Discourse (que ce soit par lien ou par e-mail). Si nous voulions une telle fonctionnalité, nous devrions probablement la développer nous-mêmes, car il y a une logique métier que nous souhaiterions ajouter aux invitations que nous enverrions. Par exemple, si la période d’inscription à l’atelier était close, nous voudrions afficher un message d’erreur sur le lien. Ou peut-être que nous voudrions inclure une réduction dans le lien.

Tout cela pour dire que cela fonctionne si nous n’avons pas à l’utiliser, mais nous aimerions vraiment ne pas avoir à nous soucier d’envoyer par inadvertance des e-mails à des personnes sans compte sur ce Discourse.

3 « J'aime »