J'ai créé une application Web et maintenant je souhaite créer des API REST pour la rendre programmable par des développeurs tiers. Ensuite, je veux construire quelques bibliothèques clientes dans des langages populaires (JavaScript, PHP, Ruby, etc) pour rendre les devs confortables en utilisant mon service en leur évitant d'analyser à la main la réponse JSON de chaque requête.Création d'une authentification API REST valide
Je n'ai jamais construit d'infrastructure API auparavant, j'ai donc la question suivante. J'aimerais suivre l'utilisation des méthodes d'API appelées par des développeurs tiers. Chaque développeur, avant de consommer les API, doit être enregistré et je veux donc associer chaque requête au développeur enregistré (et ainsi, définir des limites d'utilisation spécifiques, etc.).
J'ai pensé créer une clé api unique pour chaque développeur qu'il pourrait utiliser dans toutes ses applications, afin d'authentifier les requêtes. Mais alors je me suis rendu compte que s'il décidait d'utiliser mon wrapper javascript, les utilisateurs malveillants pourraient voir le code source de la page de l'application cliente et récupérer sa clé api. J'ai donc décidé qu'il serait préférable de créer une clé API unique pour chaque application, associée au domaine où l'application client serait hébergée. Donc, même si un utilisateur saisit une autre clé, il serait inutile en dehors du domaine où il a été initialement enregistré. Mais alors j'ai pensé: qu'en est-il des applications mobiles? Que se passe-t-il si l'appel ne provient pas d'un site Web? Comment puis-je authentifier la clé via son domaine s'il n'y a pas de domaine ou si l'adresse IP n'est pas statique?
Des conseils?
Merci!