Ce post concerne une fonctionnalité qui n’existe certainement pas encore mais que je souhaite implémenter moi-même. Pour l’instant, je n’ai aucune idée de l’ampleur du travail que cela pourrait représenter, et l’objectif de cette question est d’essayer de déterminer ce qui est nécessaire.
Quelques précisions : nous travaillons sur une solution d’authentification sans mot de passe. https://trykno.com/ Cette solution fonctionne en tant que service, ce qui signifie que les propriétaires de sites utilisant ce service n’ont pas à gérer l’envoi sécurisé d’e-mails ni le stockage de secrets ou d’informations personnelles identifiables.
Ce serait formidable pour nous d’avoir un forum dédié au projet, et nous aimerions utiliser Discourse.
Cependant, nous devons remplacer le système d’authentification pour qu’il utilise Kno.
Des questions ?
Le système d’authentification de Discourse est-il extensible (pluggable) ?
Y a-t-il des hypothèses codées en dur supposant que l’utilisateur dispose d’une adresse e-mail ?
Quel est le framework front-end ? (Je vois ember-rails dans le Gemfile, mais aucune référence à Ember dans le package.json)
Désolé si ces questions semblent simplistes ; je ne suis pas développeur Ruby et toute aide pour comprendre le problème serait précieuse. Merci.
Oui, chaque utilisateur doit avoir une adresse e-mail dans Discourse. Vous pouvez fournir des adresses e-mail invalides (se terminant par .invalid), mais nous ne le recommandons pas.
Ember. Cependant, pour un plugin d’authentification, il est peu probable que vous ayez besoin de toucher au frontend.
C’est une fonctionnalité qui vous permet de ne pas avoir besoin de connaître l’adresse e-mail des utilisateurs lors de l’utilisation de Kno, bien que cela puisse être demandé.
Il est actuellement possible de ne pas utiliser de mot de passe et de recevoir simplement un lien par e-mail.
Si votre objectif est de développer kno, vous souhaiterez probablement le concevoir comme un serveur OAuth. Ainsi, les utilisateurs pourront l’utiliser comme l’une des sources d’authentification, où le SSO est la seule autre option. Voir Discourse OAuth2 Basic
Je vois la possibilité d’obtenir un lien envoyé, mais Kno propose davantage, comme l’authentification de l’appareil via WebAuthn, une fois que vous avez confirmé votre email à usage unique.
Développer en tant que serveur OAuth ne répond malheureusement pas aux exigences dont nous avons besoin. (Je devrais probablement écrire quelque chose dans notre FAQ pour expliquer pourquoi, mais cela tient au fait que Kno vous permet de vous authentifier sur un appareil en utilisant un autre appareil).
En y regardant de plus près, il semble que je devrais pouvoir mettre au point une première version fonctionnelle en implémentant une solution SSO spécifique à Discourse.
Est-il possible d’utiliser un seul fournisseur OAuth et de désactiver tous les autres types d’authentification ?
Dans ce cas, il serait également souhaitable que le clic sur « Se connecter » lance automatiquement le flux d’authentification, c’est-à-dire sans ouvrir la fenêtre modale de connexion ni demander à l’utilisateur de sélectionner le fournisseur.
Bon, c’est excellent.
Non, je ne l’ai pas essayé car je n’ai pas encore implémenté le fournisseur OAuth pour mon service, et je suppose qu’après cela, je devrai écrire un plugin, car ce sera un nouveau fournisseur OAuth.
J’ai presque terminé mon intégration SSO, donc je pense que c’est le moment idéal pour passer à l’utilisation d’OAuth.