Configurer l'inscription et la connexion avec Auth0 en utilisant le Plugin de Base OAuth2

(oauth2_basic) Échec de l'authentification ! csrf_detected : OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF détecté

Des idées ?

Est-il possible de rendre Auth0 la seule méthode possible pour s’inscrire et se connecter ?

Oui, désactivez simplement toutes les autres méthodes de connexion (y compris le paramètre « activer les connexions locales »).

1 « J'aime »

Est-il possible de rediriger directement vers l’inscription Auth0 sans afficher le formulaire d’inscription de base ?

Si vous souhaitez masquer toute l’interface de connexion/inscription de Discourse, vous pouvez désactiver le paramètre du site « activer les connexions locales ».

1 « J'aime »

Merci, David. Je l’ai fait, mais j’ai remarqué que lorsque je m’inscris via la fenêtre modale et que je suis redirigé vers Discourse, une nouvelle demande de nom d’utilisateur et d’autres détails apparaît. Cela suggère qu’Auth0 ne transmet pas ces informations à Discourse. Je me demande si la solution serait de garder la fenêtre modale simple, avec uniquement l’adresse e-mail et le mot de passe pour l’inscription sur Auth0, puis de collecter les autres détails sur Discourse.
Le problème est que nous souhaitons conserver les données des utilisateurs au même endroit, en utilisant une base de données personnalisée attachée à Auth0.

Comment puis-je configurer la redirection après la déconnexion ? Je n’ai rien trouvé à ce sujet.

Pour n’exiger la validation de l’adresse e-mail que si l’utilisateur ne l’a pas déjà confirmée dans Auth0, la valeur du chemin json email vérifié oauth2 est email_verified.

J’ai trouvé cela en activant le paramètre oauth2 debug auth et en inspectant les journaux à l’adresse <DISCOURSE_URL>/logs. Lorsque je me suis connecté avec un compte non vérifié, le corps ressemblait à ceci :

OAuth2 Debugging :
user_json : {
  "sub"=>"auth0|XXXXXX",
  "nickname"=>"YYYYY+unprovenauth",
  "name"=>"YYYYYY+unprovenauth@ZZZZZZ.com",
  "picture"=>"https://via.placeholder.com/150",
  "updated_at"=>"2022-09-21T07:50:40.172Z",
  "email"=>"YYYYYY+unprovenauth@ZZZZZZ.com",
  "email_verified"=>false
}
1 « J'aime »

@david
J’espère que vous pourrez m’aider - j’aimerais configurer Discourse pour me connecter en utilisant la connexion XBL de Microsoft et je pensais que ce plugin pourrait être un bon point de départ.

J’ai posté ce fil de discussion dans dev :

Il existe un forum Discourse Minecraft appelé “The Hive” qui utilise ce que nous voulons faire - je ne trouve tout simplement pas de plugin pour cela. :slight_smile:

Salut !

Existe-t-il un moyen d’exiger une connexion pour publier dans la communauté, tout en permettant aux publications d’être consultables sans connexion ?

Nous avons activé le plugin Auth0 pour notre communauté. Et nous avons supprimé toutes les autres formes de connexion et de publication anonyme - nous voulons essentiellement nous assurer que les gens sont nos clients avant qu’ils ne publient dans la communauté d’utilisateurs. Mais nous aimerions toujours que les publications soient consultables par d’autres, même s’ils ne se sont pas connectés.

La façon dont j’ai réussi à faire fonctionner le plugin Auth0, c’est qu’il vous oblige à vous connecter avant même de consulter le contenu. Ai-je oublié un paramètre ou quelque chose ?

Merci !

Il semble que vous ayez activé login required. Avec cette option activée, seules les personnes ayant un compte peuvent consulter les messages du forum. Vous devriez pouvoir utiliser l’authentification unique (SSO) sans avoir besoin de l’activer. :+1:

1 « J'aime »

Cette URL est retournée juste après la création d’un compte et avant que l’utilisateur final ne puisse valider son e-mail dans Auth0. Existe-t-il un moyen d’empêcher le transfert vers la communauté avant que l’e-mail ne soit validé ?

J’ai quelques problèmes pour configurer cela. Après avoir tout activé, puis suivi le processus d’inscription sur mon Discourse, cela est transmis à Auth0 sans problème, mais lorsque je reviens, je vois un message d’erreur (« Oups ! Le logiciel qui alimente ce forum de discussion a rencontré un problème inattendu. Nous nous excusons pour la gêne occasionnée. »).

En regardant dans les journaux, je vois ce que je pense être l’erreur :

ActiveRecord::NotNullViolation (PG::NotNullViolation: ERROR: null value in column "provider_uid" of relation "user_associated_accounts" violates not-null constraint

J’ai vérifié que j’ai configuré tout selon les instructions. Il semble que ce problème pourrait être causé par le fait que le champ « Chemin de l’ID utilisateur JSON OAuth2 » est incorrect et que ce champ est vide ? Je l’ai défini sur sub.

En supposant que l’IDP fournisse des champs séparés tels que user.name.first et user.name.last, au lieu de user.name.full comme indiqué dans l’exemple de description de champ…

Serait-il possible de concaténer la valeur du chemin de nom JSON OAuth2 à partir de plusieurs chemins de données utilisateur JSON ?