Masquer la clé API

Je souhaite effectuer des appels vers l’API JSON à différents moments. Parfois, je dois fournir une clé API — je la génère donc sur le tableau de bord d’administration et je dois l’inclure dans l’appel API. Par exemple :

var token = [API KEY]
$.ajax({
     url: 'https://myforum.com/groups/[groupname].json',
      contentType: "application/json",
      headers: {
          "Api-Key": token,
          "Api-Username": "[username]"
        },
        dataType: 'json',
        success: function(result){
             console.log('result = ' + result);
         }
})

Existe-t-il un moyen de protéger cette clé afin qu’elle ne soit pas visible par les utilisateurs ?

Pour l’instant, ma solution consiste à exécuter cette fonction en dehors de mon application Discourse — mon application appellerait donc un point de terminaison hébergé ailleurs, qui exécuterait ensuite cette fonction. Ainsi, la clé API se trouve dans une fonction stockée séparément de mon application Discourse, et mon application ne connaît que le point de terminaison.

MAIS, ce serait plus élégant si je pouvais inclure cette fonction directement dans mon application Discourse, par exemple dans un thème ou un plugin. Cependant, il me semble que, quoi que je fasse, si elle fait partie du code, un utilisateur pourra voir la clé API.

Existe-t-il un moyen de masquer la clé API ?

Une application effectuant des requêtes API sensibles de quelque nature que ce soit voudra les exécuter dans le backend, plutôt que dans le frontend.

Vous obtiendrez de nombreux avantages, tels qu’une mise en cache personnalisée, des appels API parallèles, une meilleure sécurité, etc. Ce n’est pas une bonne idée de le faire dans du code JS exécuté côté client.

4 « J'aime »

Merci. J’ai mis en place une structure backend pour gérer la requête API, mais elle est distincte de mon instance Discourse (elle n’est pas du tout connectée à Discourse). Existe-t-il un moyen de réaliser cela dans le backend de l’application Discourse elle-même ?

Je suppose que cela dépend de la manière dont et de l’endroit où votre instance Discourse est hébergée. Serait-il possible de se connecter au backend pour une application hébergée chez discourse.org ?

Vous devez le développer en Rails sous forme de plugin et être sur un forfait autorisant l’ajout de plugins tiers.

2 « J'aime »