J’ai configuré Discourse sur ma machine locale et je voulais configurer la connexion SSO. Je peux rediriger l’utilisateur lorsqu’il clique sur connexion, mais lorsque je suis redirigé, je reçois continuellement des erreurs. J’ai activé la journalisation et elle indique : Nonce is incorrect, was generated in a different browser session, or has expired
Voici le fichier Python que j’utilise : Discourse-setup/main.py at main · kamleshjoshi8102/Discourse-setup · GitHub
Veuillez également noter que dans mon cas, il s’exécute sur le port 4201, j’ai donc redirigé vers le port 4201 lors de la connexion.
def nonce_valid?
if SiteSetting.discourse_connect_csrf_protection
nonce && @secure_session[nonce_key].present?
else
nonce && Discourse.cache.read(nonce_key).present?
end
end
Elle vérifie que le nonce a été généré par Discourse pour la même session que celle qui redirige l’utilisateur vers Discourse.
Vous pourriez essayer de définir le paramètre du site discourse_connect_csrf_protection sur false. Sa valeur par défaut est true. C’est un paramètre de site caché, il ne peut donc être désactivé que depuis la console Rails.
Lorsqu’il est activé, le paramètre discourse_connect_csrf_protection garantit que l’ensemble du processus d’authentification SSO se déroule par des redirections de navigateur. Si vous démarrez le processus d’authentification en effectuant une requête d’arrière-plan vers session/sso, vous devrez le désactiver. Plus de détails ici : DiscourseConnect flow no longer functions - #5 by david.