ID Discourse et 2FA

@JammyDodger, j’ai récemment créé un compte pour obtenir une instance gratuite :

Là, je semble rencontrer le même problème que celui décrit dans t/227972 :

La plupart de la documentation indique que cela devrait être activé par défaut :

Cependant, je n’ai même pas l’option de l’activer, et elle n’est pas activée par défaut :

J’ai déplacé votre message ici, car il s’agit d’un problème différent de celui que vous avez initialement signalé dans Contribute > Bug.

Discourse ID n’utilise pas OAuth2. Il fonctionne en effet comme un fournisseur SSO, ce qui est différent.

Pour configurer la double authentification (2FA), vous devez le faire au niveau du fournisseur SSO, ID. Plus précisément : https://id.discourse.com/my/preferences/security.

@jomaxro, merci. Peut-être que ce qui m’a troublé, c’est que j’ai essayé de définir enforce_second_factor sur “all”, mais je n’ai pas pu le faire car on m’a informé que “Vous ne pouvez pas imposer l’authentification à deux facteurs si les connexions locales sont désactivées.” Si ce n’est pas trop hors sujet, quelle est la solution à cela ?

C’est une bonne question… et une de celles auxquelles je n’ai pas la réponse. J’ai fait intervenir l’équipe pour trouver quelqu’un qui en a une !

Donc, l’équipe m’a corrigé. Discourse ID utilise bel et bien OAuth2 en coulisses — mes excuses. Je pensais qu’il utilisait un protocole différent.


Pour répondre à votre question, nous ne prenons pas en charge la double authentification (2FA) avec les connexions externes. Comme l’indiquait le message que vous avez vu, la 2FA ne peut pas être imposée sans que les connexions locales soient activées. Nous nous appuyons sur le fournisseur de connexion externe (Discourse ID dans ce cas, mais cela s’applique à tous les fournisseurs externes) pour gérer la 2FA, y compris son imposition.

@jomaxro, cela signifie-t-il que, avec le plan essai gratuit, je ne peux pas modifier cette préférence ? Sinon, puis-je en quelque sorte déconnecter l’ID Discourse ?

Je souhaite confirmer : faites-vous référence à un essai gratuit ou au plan gratuit ?

@jomaxro, veuillez nous excuser. Plan gratuit, je crois :

Question pour nous : le fournisseur d’identité (IdP) transmet-il au fournisseur de service (SP) l’information indiquant si l’utilisateur a effectué une authentification multifacteur (MFA) ou non ?

Je pense au mécanisme analogue à U2F / FIDO : le programme peut demander une attestation de la part de l’appareil concernant le niveau d’interaction utilisateur attendu ou requis pour l’identifiant.

Si Discourse ID… ou tout autre IdP (SAML ? oAuth2 ? OIDC ?) transmet cette information au SP, cela constituerait une donnée que nous pourrions potentiellement exploiter.

Dans le cas contraire, nous serions contraints d’implémenter la MFA après la connexion fédérée pour obtenir cette garantie.

La méthode standard pour cela est d’utiliser OIDC. Discourse ID est actuellement construit uniquement sur OAuth2. Pour prendre en charge un indicateur MFA, nous devrions implémenter OIDC au niveau du fournisseur et échanger les valeurs MFA avec les clients qui en ont besoin.

Plusieurs complications se posent :

  • Dans le cœur de Discourse, nous avons la possibilité d’exiger la 2FA uniquement pour certains types d’utilisateurs (personnel ou tous) ; il faudra probablement une fonctionnalité similaire prise en charge via l’ID.
  • L’ID permet les connexions via Google, Apple, Facebook et GitHub, mais ces services n’indiquent pas de manière fiable si l’utilisateur a bien activé la 2FA lors de la connexion. Nous pourrions donc être amenés à implémenter la 2FA au niveau de l’ID, et probablement à exiger une double authentification pour certains utilisateurs, ce qui n’est pas idéal.
  • La 2FA au niveau du fournisseur d’identité (c’est-à-dire pas sur l’instance locale) est-elle suffisante pour tous les consommateurs ? En général, je pense que oui, mais nous devrons mener quelques recherches supplémentaires avant de nous engager dans cette direction.