Les utilisateurs s’inscrivent sur \u003chttps://getdbt.com/community/join-the-community\u003e
Ils reçoivent un e-mail de confirmation d’Auth0
Ils atterrissent sur \u003chttps://getdbt.com/community/email-verified\u003e
Ils cliquent sur Obtenir de l’aide sur le forum communautaire, et sont redirigés vers Auth0 pour se connecter
Après s’être connectés, ils sont redirigés vers discourse.getdbt.com mais avec l’avertissement CSRF affiché.
S’ils cliquent sur Se connecter puis sur Utiliser votre compte communautaire dbt, le compte est créé avec succès et ils voient la boîte de dialogue de création de compte où ils peuvent définir leur nom d’utilisateur, etc.
Vidéo Loom montrant cela en action :
J’ai activé oauth2 debug auth et dans les logs, je peux voir (oauth2_basic) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected
Mes questions :
Est-ce un problème de Discourse ou un problème d’Auth0 ? Je suppose que c’est un problème de Discourse car un flux de connexion pratiquement identique pour Slack fonctionne sans problème.
Pourquoi cela fonctionne-t-il sur la page de connexion mais pas lorsque la connexion est déclenchée du côté d’Auth0 ?
Le message d’erreur CSRF par défaut implique que cela se produit lorsque le navigateur change, ou lorsque le flux de connexion prend trop de temps. Ni l’un ni l’autre n’est le cas, qu’est-ce qui pourrait d’autre en être la cause ?
Merci @david - pour le moment, je n’ai rien dans la zone URI de connexion de l’application, mais j’ai quelque chose dans les URL de rappel autorisées :
Dois-je mettre https://discourse.getdbt.com/auth/oauth2_basic dans le champ URI de connexion de l’application et laisser https://discourse.getdbt.com/auth/oauth2_basic/callback dans le champ URL de rappel autorisées ?
Pouvez-vous partager plus de détails sur la façon dont le lien « Obtenir de l’aide sur le forum communautaire » est implémenté ? Où mène le lien ? Je suppose actuellement que le bouton est géré par Auth0, et que l’ajout de cette nouvelle configuration d’URL amènera le bouton à se lier correctement à /auth/oauth2_basic pour démarrer le flux de connexion.
Désolé pour la réponse tardive - je reviens juste après la pause de Noël !
J’ai fait ceci :
mais j’obtiens toujours le même résultat.
Ce lien pointe vers https://dev-zb38hsho.us.auth0.com/samlp/5GpVvVgryMnBaNJFuLt5DW3bs89jO0hr, où dev-zb38hsho est notre ID d’instance Auth0 et 5GpVvVgryMnBaNJFuLt5DW3bs89jO0hr est l’ID client de l’application Discourse dans Auth0.
La visite de ce lien redirige vers https://dev-zb38hsho.us.auth0.com/u/login?state=SESSION_SPECIFIC_TOKEN.
La clé est que Discourse doit démarrer le flux d’authentification à /auth/oauth2_basic, puis rediriger vers Auth0, puis revenir à /auth/oauth2_basic/callback.
J’espérais que nous pourrions amener Auth0 à déclencher la connexion en commençant par la première URL, mais il semble qu’il saute directement de Discourse à l’URL de rappel.
Pourriez-vous mettre à jour le bouton pour qu’il pointe vers /auth/oauth2_basic sur le forum ? Cela démarrera le flux d’authentification et redirigera immédiatement vers Auth0, donc l’expérience utilisateur globale devrait être la même.
Oui, ça fonctionne ! Il s’arrête sur une page intermédiaire avec un bouton Continuer ; est-ce que l’interaction de l’utilisateur est obligatoire pour déclencher en toute sécurité un flux OAuth ou quelque chose comme ça ?
Cette page s’affiche lorsqu’il existe plusieurs méthodes de connexion sur un site. Si vous désactivez les « connexions locales » (nom d’utilisateur/mot de passe), cela devrait passer directement au processus de connexion.