Un petit détail cependant : sur Safari/Mac, l’authentification Web est une fonctionnalité réservée aux développeurs, désactivée par défaut. Une fois activée, elle fonctionne bien. Mais il faudrait probablement afficher un message ou un avertissement lorsque l’authentification Web n’est pas activée. Actuellement, sur Safari par défaut, rien dans l’interface n’indique que le processus d’enregistrement ne fonctionnera pas (la console affiche une erreur) :
Le commit le plus récent semble fonctionner. Je viens d’utiliser l’authentification à deux facteurs (avec empreinte digitale !) sur mon téléphone Android.
C’est vrai, mais dans ce cas, il s’agit d’une partie normale du travail chez Discourse, donc nous prendrions en charge les frais. Désolé si ce n’était pas clair, mais j’espère que c’est plus clair maintenant ?
Félicitations pour le support de WebAuthn ! C’est intéressant de voir que vous avez développé votre propre solution plutôt que d’utiliser le gem webauthn. Si vous avez des retours à nous faire part, je serais ravi de les entendre
Une suggestion pour la maquette du “Flux de connexion” : WebAuthn dispose d’un logo officiel qui pourrait être utilisé à la place d’une image générique d’empreinte digitale. Outre l’empreinte digitale, la reconnaissance faciale, le motif de balayage ou le code PIN sont également des options courantes de vérification utilisateur.
Merci pour votre retour, Rafe. Nous devrons donc ajouter l’algorithme supplémentaire ici. Et merci également pour le lien vers le logo officiel ! Mon idée, lorsque j’ai limité l’implémentation à un seul algorithme, était d’ajouter le nombre minimum d’algorithmes pris en charge pour faire fonctionner la version 1, car je n’étais pas sûr des nuances entre tous les algorithmes, et ES256 était utilisé dans tous les exemples que j’ai pu trouver.
Quant à la raison pour laquelle j’ai choisi de ne pas utiliser le gem à l’époque, j’y ai beaucoup réfléchi et je savais que cette décision serait remise en question à un moment ou à un autre. J’ai certes lu une grande partie du code du gem pour mieux comprendre son implémentation. Les principales raisons étaient :
Ne pas vouloir ajouter une dépendance supplémentaire à Discourse. Chaque dépendance de gem ajoute une surcharge, peu importe l’excellence du code de ce gem.
Vouloir bien comprendre comment fonctionne cette pièce critique de la sécurité de Discourse. J’ai pensé que placer le code au cœur de Discourse rendrait les choses plus claires et plus faciles à étendre, sans avoir de « boîte noire », pour ainsi dire. (Ce n’est pas une critique du gem lui-même ou de sa complexité ; je sais que les gens peuvent simplement consulter le code, et j’ai trouvé très facile de suivre ce qui se passait).
Ne pas vouloir ajouter plus de code que le strict nécessaire pour faire fonctionner WebAuthn. Par exemple, j’ai omis l’attestation dans notre implémentation initiale. Je ne pensais pas qu’il y avait beaucoup d’intérêt à ajouter tout un atelier d’outils alors que nous avions simplement besoin d’une clé à molette.
Cela dit, cela aurait pu être une erreur de ma part. Si nous passons aux versions V2, V3, etc. du support de WebAuthn avec des attestations, plus d’algorithmes pris en charge, et ainsi de suite, cela pourrait devenir trop fastidieux pour nous de devenir des « experts WebAuthn », pour ainsi dire. À ce stade, je pense que nous pourrions réévaluer l’utilisation du gem.
C’est dommage que les iPhone aient besoin d’un périphérique tiers pour cela. J’espère qu’iOS++ l’intégrera nativement avec l’authentification de l’appareil et la puce sécurisée, comme Windows, macOS et Android.
Je suis tellement ravi de pouvoir me connecter à Discourse en le regardant !!
Je suis en fait un peu surpris que le support de l’authentificateur intégré ne soit pas encore là… mais c’est une nouvelle excitante quand même - je continuerai à retenir mon souffle.
J’ai remarqué une possible incohérence de l’interface utilisateur concernant l’indication de l’activation de la double authentification (2FA) pour certains utilisateurs sur une instance hébergée de Discourse :
La liste de tous les utilisateurs « Staff » ne montre pas que mon compte a la 2FA activée :
La page de résumé du compte suggère que la 2FA est activée, étant donné le texte du bouton « Gérer l’authentification à deux facteurs ».
L’authentification à deux facteurs indique qu’une clé de sécurité est activée et que le second facteur pourrait être désactivé.
D’autres utilisateurs sur la même instance qui choisissent d’utiliser un authentificateur basé sur des jetons (sans clé de sécurité) affichent l’icône de cadenas dans la liste « tous les utilisateurs ».
Veuillez me faire savoir s’il s’agit d’un bug de l’interface utilisateur ou si l’ajout d’une simple clé de sécurité ne suffit pas pour activer la 2FA sur cette plateforme.
Je vais examiner cela, mais mon hypothèse est qu’il s’agit simplement d’un bug d’interface utilisateur dans la liste des utilisateurs, si la section 2FA réelle de l’interface affiche tout correctement. Merci pour votre signalement !
Apple a rejoint l’Alliance FIDO (alias Fast Identity Online), une organisation qui compte déjà des géants tels que Google, Intel, Microsoft et Samsung.