Problème SSO : paramètres SSO ou SIG manquants

Il semble probable que quelque chose ne soit pas configuré correctement. Essayez peut-être de prendre un peu de recul. Je n’ai pas de site fournisseur SSO configuré sur mon installation locale pour le moment, mais cela pourrait vous aider en partie.

Sur Discourse, assurez-vous que les paramètres suivants sont configurés :

Le paramètre discourse connect url doit être défini sur l’URL qui gère le code que vous avez posté.

Définissez le paramètre discourse connect secret sur une chaîne de caractères d’au moins 10 caractères. Notez que vous avez la chaîne de 7 caractères keyhere codée en dur dans le code que vous avez posté. Je suppose que vous modifiez cette valeur lorsque vous exécutez le code. Définissez-la sur la même valeur que celle que vous avez entrée sur Discourse.

Maintenant, déconnectez-vous de votre site Discourse. Ouvrez l’inspecteur web de votre navigateur dans l’onglet réseau. Cliquez sur le bouton “Login” sur Discourse. Vous devriez voir des requêtes similaires aux deux premières requêtes de la capture d’écran ci-dessous :

La première requête sera vers http://forum.example.com/session/sso?return_path=%2F

La requête suivante devrait être vers https://example.com/?sso=<payload_sso_envoyé_par_discourse>&sig=<signature_sso>

example.com et forum.example.com doivent être définis sur les domaines réels que vous utilisez.

Si tout est configuré correctement, je m’attendrais à ce que cela attribue les valeurs des paramètres sso et sig aux variables que vous avez définies ici :

$sso = $_GET['sso'];
$sig = $_GET['sig'];

Si c’était moi, je commenterais probablement le reste du code et je me contenterais de confirmer que vous pouvez recevoir la charge utile et l’attribuer aux variables.

Avec DiscourseConnect activé, vous pouvez vous reconnecter à votre site Discourse en visitant la route /u/admin-login. Si vous avez accès à la console Rails du site Discourse, vous pouvez également vous reconnecter en désactivant DiscourseConnect depuis la console Rails :

SiteSetting.enable_discourse_connect = false

Il est possible qu’il y ait des erreurs plus loin dans le code que vous avez posté. Par exemple, je pense que vous devez appeler urldecode sur la valeur du paramètre sso avant de générer le sig attendu. Regardez comment le plugin WP Discourse le gère :

$payload dans la fonction ci-dessus n’est que la valeur du paramètre de requête sso, après qu’il ait été assaini ici : wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub.

1 « J'aime »