Bypass SSO aggiungendo un'email sconosciuta al gruppo

Supponiamo che un sito abbia l’SSO abilitato.

Quando si aggiungono utenti in blocco a un gruppo tramite l’interfaccia descritta qui, se un indirizzo email nell’elenco di input non esiste già su Discourse, viene inviata un’email di invito.

Se si clicca sul link, si viene reindirizzati a una pagina di creazione account all’interno di Discourse:

Se si compila il modulo, si crea un account. L’account creato non contiene informazioni SSO

Credo sia piuttosto chiaro perché questo rappresenti un problema:

  • Eludere il nostro sistema di autenticazione SSO è molto grave.
  • Senza un avviso del tipo “X persone stanno per ricevere un’email”, ho involontariamente inviato spam a delle persone perché non mi ero reso conto che i messaggi venivano inviati.

Comportamento atteso:

  • Quando si aggiungono utenti in blocco a un gruppo, se l’SSO è abilitato, ignorare tutti gli indirizzi email che non sono già presenti sul sito.
7 Mi Piace

Grazie per aver segnalato il problema. Sono riuscito a riprodurlo sul mio sito di sviluppo. Quando SSO è abilitato, eventuali indirizzi email non già presenti sul sito dovrebbero essere ignorati se aggiunti a un gruppo. Provvederemo a risolvere il problema. Ci scusiamo per il disagio causato.

8 Mi Piace

Risolto in PR #11950 e PR #11951. Grazie per la segnalazione! :smiley:

7 Mi Piace

Questo argomento è stato automaticamente chiuso 24 ore dopo l’ultima risposta. Non sono più consentite nuove risposte.

@Grayden_Shand In realtà stiamo attualmente valutando di aggiungere l’autenticazione SSO direttamente nella pagina di riscatto degli inviti. Al momento del riscatto dell’invito, l’utente dovrà autenticarsi tramite SSO invece di compilare il modulo di registrazione. Questo si adatta al tuo caso d’uso?

@sam Sto riflettendo sul flusso degli inviti e una cosa su cui non sono sicuro è se l’indirizzo email a cui è stato inviato l’invito debba corrispondere all’email SSO. Sembra che potremmo imporre questo requisito per gli inviti basati su email, ma non per quelli basati su link. Cosa ne pensi?

3 Mi Piace

Sì, dobbiamo imporre questo, specialmente per i siti che richiedono l’approvazione dell’account.

Quindi potresti abilitare l’autenticazione Facebook, disabilitare l’autenticazione locale e comunque onboardingare gli utenti.

I link di invito però (chiaramente) ottengono un’eccezione qui perché non sono associati a un’email.

1 Mi Piace

Per il nostro caso d’uso, sarebbe molto meglio poter sopprimere completamente le email di invito. Per la maggior parte dei nostri siti (comunità temporanee per corsi online), esiste una finestra temporale limitata per registrarsi (e un costo). Quindi, immagino che una persona che riceve un invito al sito e poi si presenta scoprendo di non poter più unirsi sarebbe frustrata. Non esiste davvero alcuna circostanza in cui vogliamo che qualcuno riceva un invito a uno dei nostri siti.

Se procedi con questa funzionalità, ti chiedo di implementare anche un avviso con un messaggio del tipo: “Stai per inviare email a XX persone che non sono utenti del tuo sito: bob@example.com, alice@example.com, …” In questo modo potremmo individuare quegli utenti ed eliminarli dall’elenco di aggiunta in massa.

Sarebbe possibile utilizzare i link di invito per il tuo caso d’uso? In questo modo non viene inviata alcuna email e puoi impostare una data di scadenza.

Supporto ancora una modalità ‘ninja’ per bypassare l’invio di email, così da poter aggiungere un gran numero di indirizzi a una lista consentita, ma sono curioso di sapere se la funzionalità dei link di invito soddisfi già le tue esigenze in questo contesto.

1 Mi Piace

Non credo di sì, ma forse non ho capito correttamente la domanda. Lasciate che vi spieghi come utilizziamo Discourse, la funzionalità SSO e perché ho inizialmente incontrato questo bug.

Gestiamo una piattaforma di e-learning che utilizza un forum Discourse temporaneo per ogni sessione di ogni workshop (corso).

Utilizziamo SSO con un sistema di autenticazione personalizzato per due motivi:

  1. in modo che un utente debba creare un solo insieme di credenziali per accedere a qualsiasi corso a cui si è iscritto.
  2. per applicare politiche su chi è autorizzato ad accedere a ciascun forum Discourse in base a dati arbitrari nel nostro database. Ad esempio, nel nostro endpoint SSO di Discourse, verifichiamo che l’utente abbia una registrazione valida e che la data rientri nei limiti delle nostre date di apertura e chiusura.

Ho incontrato questo bug sopra quando volevamo creare un gruppo in un workshop solo per le persone che erano in un altro (come un gruppo di ex allievi). Quindi ho aggiunto l’intera lista delle classi dal workshop diverso alla finestra modale di aggiunta in blocco e ho inviato per sbaglio inviti a tutti quelli nella lista che non si erano iscritti al workshop corrente.

Quindi, non useremmo mai la funzione di invito in Discourse (sia che si tratti di link o di email). Se volessimo una funzione di invito, dovremmo probabilmente costruirla noi stessi perché ci sono alcune logiche di business che vorremmo applicare sopra qualsiasi invito che inviamo. Ad esempio, se il periodo di iscrizione al workshop fosse chiuso, vorremmo visualizzare un messaggio di errore sul link. O forse vorremmo includere uno sconto nel link.

Tutto questo per dire che funziona se non dobbiamo usarlo, ma ci piacerebbe davvero non dover preoccuparci di inviare involontariamente email a persone senza un account in quel Discourse.

3 Mi Piace