@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 ?
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 ?
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.