Confirmation d'une combinaison User+Pass correcte via l'API ?

Bonjour à tous,

J’aurais besoin de quelques conseils pour connecter des utilisateurs à un site web distant en utilisant leurs identifiants Discourse existants (nom d’utilisateur et mot de passe).

Je ne pense pas avoir besoin de SSO… voici pourquoi.

Tout d’abord, un peu de contexte sur mon cas d’usage actuel et pourquoi je n’aime pas cette approche.

J’ai actuellement un site web à l’adresse https://www.example.com qui dispose d’un bouton de connexion.

Lorsqu’un utilisateur clique sur ce bouton, on lui demande de saisir son nom d’utilisateur et son adresse e-mail existants sur Discourse (note : nom d’utilisateur + e-mail, PAS de mot de passe).

Je prends ensuite ces deux éléments et j’envoie une requête API GET vers :

"https://mydiscourse.comm/admin/users/list/all.json?email=" + strEmail

Dans les en-têtes de cet appel API, j’inclus le nom du compte utilisateur « system » ainsi que la clé API associée à cet utilisateur.

Si une correspondance d’adresse e-mail est trouvée, je compare le nom d’utilisateur fourni dans mon formulaire avec celui retourné dans la réponse API pour cet e-mail.

S’il y a correspondance, je considère alors que cet utilisateur est connecté sur mon site https://www.example.com.

J’ai mis en place cette solution il y a trois ou quatre ans et elle fonctionne toujours parfaitement aujourd’hui.

Mais…

  1. C’est très confus pour un utilisateur de devoir saisir une combinaison nom d’utilisateur + adresse e-mail dans un formulaire de connexion
    – La plupart des gens s’attendent toujours à saisir un nom d’utilisateur + mot de passe
    – Malgré des instructions détaillées partout sur mon formulaire, les gens se trompent encore naturellement

  2. Ce n’est pas sécurisé
    – Il suffit de connaître le nom d’utilisateur et l’adresse e-mail pour, armé de ces deux informations (triviales), se connecter à https://www.example.com « en tant qu’eux » sans grande difficulté

Ce que je souhaiterais faire, c’est permettre à l’utilisateur de cliquer sur le bouton de connexion de https://www.example.com et de saisir son nom d’utilisateur et son mot de passe Discourse existants (au lieu de nom d’utilisateur + e-mail !).

Mon site web example.com lancerait alors une requête API rapide vers mon instance Discourse, confirmerait que la combinaison nom d’utilisateur + mot de passe fournie est correcte et renverrait l’ID de l’utilisateur Discourse correspondant.

J’espère que cela a du sens :grimacing:

J’ai parcouru toute la documentation de l’API et, pour tout vous dire, je n’arrive pas à trouver un point de terminaison « login » simple ? :thinking:

Je n’ai pas besoin ni ne souhaite connecter ou déconnecter les gens de mon instance Discourse elle-même ; je veux simplement vérifier que leur nom d’utilisateur et leur mot de passe sont corrects.

Toute indication, conseil, lien ou recommandation serait grandement apprécié :blush:

Il n’existe aucune route d’API permettant de renvoyer le mot de passe brut d’un utilisateur, donc je ne pense pas que cette approche fonctionnera. D’après votre description, il semble que vous souhaitiez utiliser Discourse comme fournisseur SSO pour votre site web. Cela pourrait être mis en œuvre. Vous trouverez les détails sur la configuration ici : Use Discourse as an identity provider (SSO, DiscourseConnect).

4 « J'aime »

Merci @simon — un coup d’œil rapide à ce lien suggère que cela pourrait être exactement ce dont j’ai besoin.

Je me mets à lire :nerd_face:

1 « J'aime »

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.