Bonjour, j’espère obtenir quelques conseils. Mon SSO a cessé de fonctionner cette semaine et je pensais avoir tout réparé hier (cela fonctionnait, je vous le jure
Note : J’ai examiné la section « Nouveaux utilisateurs » d’hier et d’aujourd’hui, et j’avais de nouveaux utilisateurs les deux jours (après ma correction), mais maintenant, c’est à nouveau cassé…). Malheureusement, les mises à jour que j’ai effectuées ne fonctionnent pas aujourd’hui.
Problème : Les utilisateurs ne peuvent pas créer de nouveaux comptes et ceux qui se déconnectent ne peuvent plus se reconnecter.
J’ai remarqué que mon serveur Discourse renvoyait des erreurs 400 sur les routes suivantes :
403 : GET : discourse-url/users/by-external/USER-ID.json?
Note : J’ai récemment découvert dans la documentation de l’API que cette route n’existe pas ? (même si elle a fonctionné auparavant). Il semble que la route soit : https://discourse.example.com/u/by-external/{external_id}.json
404 : POST : discourse-url/admin/users/sync_sso?
La raison pour laquelle le point d’interrogation ? se trouve à la fin est que j’ai un champ de paramètre facultatif dans une fonction qui génère des URL. Pour ces deux routes, toutes les données sont envoyées dans le corps du formulaire ou dans les en-têtes.
J’utilise la bibliothèque suivante.
Ce que j’ai mis à jour (et ce que je pensais avoir résolu le problème) :
Dans toutes mes requêtes, j’envoyais l’Api-Key et l’Api-Username via un paramètre de requête. Au cours des derniers mois, j’ai remarqué dans mon panneau d’administration un avertissement indiquant que j’utilisais des en-têtes obsolètes dans ma requête. Cela m’a renvoyé vers ce post, et les points clés sont les suivants :
Avertissement de dépréciation !
Le 6 avril 2020, nous avons supprimé le support de toutes les authentifications basées sur des éléments autres que les en-têtes HTTP (à l’exception de certains itinéraires RSS, de réception de courriels et de ICS). Cela signifie que les requêtes API contenant unapi_keyet unapi_usernamedans les paramètres de requête ou dans le corps HTTP de la requête cesseront bientôt de fonctionner. Veuillez consulter l’exemple de requête cURL ci-dessous pour savoir comment mettre à jour vos requêtes API afin d’utiliser les en-têtes HTTP pour l’authentification.
J’ai mis à jour toutes mes requêtes ; désormais, toutes mes requêtes contiennent l’Api-Key et l’Api-Username dans l’en-tête, et le type de contenu est défini sur multipart/form-data.
Si quelqu’un peut me donner des conseils sur les pistes à explorer pour déboguer ce problème, je le remercie vivement. Je suis presque certain à 100 % que cela fonctionnait à la fin de ma journée de travail hier : j’ai pu me connecter et me déconnecter de mon compte, et j’ai pu créer de nouveaux comptes.
N’hésitez pas à me dire si vous avez besoin de plus d’informations. Merci !