ID Discourse e 2FA

@JammyDodger, ho recentemente registrato un account per un’istanza gratuita:

Lì sembra che io stia riscontrando anche il problema descritto in t/227972:

La maggior parte della documentazione indica che questa funzione dovrebbe essere abilitata per impostazione predefinita:

Tuttavia, non ho nemmeno l’opzione per abilitarla e non risulta abilitata di default:

Ho spostato il tuo post qui, poiché si tratta di un problema diverso rispetto a quello che avevi inizialmente segnalato in Contribute > Bug.

Discourse ID non utilizza OAuth2. In pratica, funziona come un provider SSO, il che è diverso.

Per configurare l’autenticazione a due fattori (2FA), dovrai farlo presso il provider SSO, ID. Nello specifico: https://id.discourse.com/my/preferences/security.

@jomaxro, grazie. Forse, ciò che mi ha confuso è stato il fatto che ho tentato di impostare enforce_second_factor su “all”, ma non sono riuscito a farlo perché mi è stato comunicato: “Non puoi imporre l’autenticazione a due fattori se gli accessi locali sono disabilitati”. Se non è troppo fuori tema, qual è la soluzione a questo problema?

È una bella domanda… e una per cui non ho la risposta. Ho coinvolto il team per trovare qualcuno che la conosca!

Quindi sono stato corretto dal team. Discourse ID utilizza effettivamente OAuth2 sotto il cofano - le mie scuse. Pensavo che utilizzasse un protocollo diverso.


Per quanto riguarda la tua domanda, non supportiamo l’autenticazione a due fattori (2FA) con accessi esterni. Come indicato dal messaggio che hai visto, la 2FA non può essere imposta senza abilitare gli accessi locali. Ci affidiamo al provider di accesso esterno (in questo caso Discourse ID, ma ciò vale per tutti i provider esterni) per gestire la 2FA, inclusa la sua imposizione.

@jomaxro, significa che con il piano gratuito non posso modificare quella preferenza? In alternativa, posso in qualche modo disconnettere l’ID Discourse?

Vorrei solo confermare: ti riferisci alla prova gratuita o al piano gratuito ?

@jomaxro, scusa. Piano gratuito, credo:

Domanda per noi: l’IdP trasmette al SP le informazioni relative al fatto che l’utente abbia o meno eseguito l’MFA?

Sto pensando al meccanismo analogo a U2F / FIDO: il programma può richiedere un’attestazione dal dispositivo riguardo al livello di interazione dell’utente previsto o richiesto per le credenziali.

Se Discourse ID… o, analogamente, qualsiasi altro IdP (SAML? oAuth2? OIDC?) trasmettesse queste informazioni al SP, sarebbe un dato che potremmo potenzialmente utilizzare.

In caso contrario, siamo un po’ bloccati e dovremmo implementare l’MFA dopo l’accesso federato per ottenere questa garanzia.

Il modo standard per farlo è tramite OIDC. Discourse ID è attualmente costruito solo con OAuth2. Per supportare un flag MFA, dovremmo implementare OIDC a livello del provider e scambiare i valori MFA con i client che lo richiedono.

Ci sono diverse complicazioni:

  • nel nucleo di Discourse, abbiamo l’opzione di richiedere l’autenticazione a due fattori (2FA) solo per determinati tipi di utenti (personale o tutti); probabilmente dovremmo supportare qualcosa di simile tramite ID
  • ID consente accessi tramite Google/Apple/Facebook/Github, ma questi non indicano in modo affidabile se l’utente abbia completato il 2FA durante l’accesso… potremmo dover implementare il 2FA a livello di ID e, molto probabilmente, richiedere un doppio 2FA ad alcuni utenti, il che non è ideale
  • è sufficiente che il 2FA sia gestito a livello del provider di identità (cioè non sull’istanza locale) per tutti i consumatori? In generale, penso di sì, ma dovremmo fare ulteriori ricerche prima di impegnarci in questa direzione