Fournisseur SSO WordPress : page blanche

J’essaie d’utiliser WordPress comme fournisseur SSO pour Discourse via le plugin. Lorsque je clique sur « Se connecter » sur le site du forum, je suis redirigé vers mon site web avec un paramètre d’URL SSO ajouté, mais la page s’affiche en blanc. Le plugin est-il censé lire ce paramètre d’URL et déclencher une action qui échoue ? Dois-je l’envoyer vers un chemin spécifique sur le site web ? Je ne suis pas sûr du comportement attendu, donc je ne sais pas comment procéder au dépannage. Je ne vois aucune erreur dans les journaux d’erreurs de mon serveur.

Votre site utilise-t-il la page de connexion WordPress par défaut située à /login.php ? Si non, vous devrez peut-être ajouter un chemin à l’option « Chemin vers votre page de connexion » (trouvée dans l’onglet Fournisseur SSO WP Discourse).

Avez-vous installé Woocommerce sur votre site ?

Il n’utilise pas la valeur par défaut, alors que je l’ai bien spécifiée dans le champ. Toujours pas de succès, juste une page blanche.

Et non, pas de WooCommerce.

Donc, je pense que peut-être ma compréhension du fonctionnement de ce système est erronée ou qu’il me faut un changement supplémentaire. Lors des tests, j’ai réalisé que si je suis déjà connecté au site web, tout fonctionne comme prévu. Cependant, mon attente était que, si je ne suis pas déjà connecté au site web, le processus de connexion soit déclenché, mais cela ne semble pas se produire. Sur cette base, voici quelques questions de suivi :

  1. La redirection de connexion depuis Discourse est-elle censée envoyer l’utilisateur vers /?sso=abcd1235… sur mon site ou vers /sign-in/?sso=abcd1235… sur mon site (en incluant mon chemin de connexion personnalisé) ? Actuellement, elle utilise /.
  2. L’attente est-elle que mon code de connexion personnalisé conserve les paramètres d’URL sso et les inclue dans la redirection vers mon site une fois l’utilisateur connecté, afin que la connexion SSO puisse ensuite s’effectuer ?

Et je viens de réaliser que cela utilise le nom d’utilisateur WordPress pour le nom d’utilisateur Discourse. Dans notre cas, nous devrions utiliser le surnom de WordPress, car le nom d’utilisateur est une valeur hachée basée sur le fournisseur d’authentification tiers. Cela pourrait donc être une impasse.

Oui. Après avoir cliqué sur le bouton « Se connecter » dans Discourse, les utilisateurs seront redirigés vers l’URL que vous avez définie comme sso url dans Discourse. Il s’agit normalement de l’URL d’accueil de votre site.

Si vous n’êtes pas déjà connecté à WordPress, le code SSO vous redirigera vers l’URL de connexion de votre site. Par défaut, cette URL est /wp-login.php. Elle peut être remplacée en configurant l’option « Chemin vers votre page de connexion ». Après la connexion, les utilisateurs devraient être redirigés vers l’URL d’accueil de votre site, avec les paramètres de requête envoyés par Discourse conservés.

Si cela ne fonctionne pas lorsque vous n’êtes pas déjà connecté à WordPress, le problème peut provenir d’une redirection de connexion configurée sur votre site qui remplace celle définie par le code SSO de WP Discourse. Une autre possibilité est que les paramètres de requête définis par Discourse soient supprimés par le code de connexion de votre site.

Vous pouvez utiliser le filtre wpdc_sso_params pour remplacer le nom d’utilisateur défini par le plugin :

add_filter( 'wpdc_sso_params', 'wpdc_custom_sso_params', 10, 2 );
function wpdc_custom_sso_params( $params, $user ) {
    $params['username'] = $user->user_nicename;

    return $params;
}

Pour plus de détails sur ce qui se passe, consultez wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub.

Je venais d’examiner le code du plugin et j’ai vu où je pouvais modifier cela. Utiliser une surcharge est une bien meilleure approche, merci ! Je vais vérifier mon code de connexion personnalisé pour voir si et où il pourrait interférer avec le processus. C’est très utile, merci encore.