À partir du 24 mars, il semble y avoir eu un changement dans la façon dont l’API Discourse répond aux requêtes.
Aucune modification de code n’a été apportée de notre côté, et la clé API est toujours valide, mais l’un de nos services backend qui tente d’obtenir des informations utilisateur a commencé à échouer lors de l’accès à users/by-external/{id}.json.
Nous envoyons les en-têtes Api-Key et Api-Username avec ces requêtes, qui devraient être obligatoires, conformément à la documentation. Ces requêtes fonctionnent correctement depuis des années.
Maintenant, toutes les requêtes faites à ce point de terminaison échouent avec un 403, et le corps de la réponse :
{
"errors": [
"Vous n'êtes pas autorisé à afficher la ressource demandée."
],
"error_type": "invalid_access"
}
Cela se produit également si j’essaie de demander /u/{username}.json.
Étonnamment, lorsque je n’envoie PAS les en-têtes, ces requêtes qui, selon la documentation, nécessitent ces en-têtes d’authentification, répondent en fait avec les données demandées, comme si elles étaient authentifiées.
J’ai également essayé d’envoyer une clé API incorrecte, et la réponse est légèrement différente :
{
"errors": [
"Vous n'êtes pas autorisé à afficher la ressource demandée. Le nom d'utilisateur ou la clé API est invalide."
],
"error_type": "invalid_access"
}
Cela me dit que la clé est acceptée, mais indique par erreur qu’elle ne donne pas accès à la ressource, tout en accordant un accès complet aux requêtes non authentifiées.
Je viens également de tester avec une toute nouvelle clé API avec des options globales / tous les utilisateurs, et j’obtiens les mêmes résultats.