46 votes

Comment ouvrir une application qui utilise des clés d'API ?

Dans le cadre d'un projet personnel, je développe une application de bureau qui requiert des clés API de plusieurs services Web différents.

J'ai parcouru et préparé cette application pour qu'elle devienne open-source et j'ai rencontré le problème de ce qu'il faut faire avec ces clés.

Le problème est le suivant : D'après ce que j'ai compris, ces clés d'API ne doivent pas être visibles par quiconque utilise l'application ou visualise/modifie le code source. Du côté du service web, ces clés d'API sont utilisées pour identifier les applications accédant à leur API, et autoriser/bloquer l'utilisation le cas échéant. Dans la plupart des conditions générales d'utilisation pour la réception de ces clés, il est explicitement indiqué que les clés ne doivent pas être partagées avec le monde entier.

Actuellement, toutes mes clés sont codées en dur, mais je suis dans une impasse quant à la manière de gérer la situation des clés privées dans une application open-source :

-Si les clés restent codées en dur, elles seront visibles publiquement dès que mon code source le sera.

-Je ne peux pas vraiment omettre le fichier source avec les clés de la distribution du code, car alors il ne sera pas compilé. Techniquement, cela résout le problème, mais en introduit un nouveau, inacceptable. inacceptable.

-Si je pousse les touches vers un fichier .ini ou un autre fichier de configuration, et que je n'inclus simplement pas ce fichier dans mon dépôt de code public, il n'y aura pas de problème. dans mon dépôt de code public, il devrait toujours être distribué avec le binaire de mon application pour que l'application fonctionne, donc mes clés seraient visibles dans la distribution de l'application au lieu de la distribution des sources. Ce n'est pas une amélioration. Toute gymnastique de cryptage que je tenterais d'utiliser sur ce fichier INI ne ferait qu'ajouter de la complexité pour quiconque tenterait de modifier mon code.

Ainsi, en ce qui concerne ma base de code (actuellement sous Mercurial pour le contrôle de version), quelle est la meilleure façon de tout gérer afin que le code puisse être public, mais que mes clés restent privées ?

17voto

Kornel Kisielewicz Points 26556

Je ne sais pas quel langage vous utilisez, mais par exemple, en C/C++, vous ajouteriez un fichier include avec les clés API, puis vous le laisseriez en dehors du contrôle de la source. explicitement faux Les clés API. La plupart des langues ont l'une ou l'autre façon d'inclure des fichiers.

8voto

Ryan Gibbons Points 1631

Votre application doit utiliser un fichier de configuration. Ce fichier de configuration est chargé au moment de l'exécution et ne devrait pas affecter la compilation. Il permet aux utilisateurs de télécharger un binaire tout en utilisant leur propre clé api.

Comme le dit Kornel, vous pouvez inclure un exemple de fichier de configuration avec une fausse clé API, dans votre contrôle de source.

Vous pouvez également vous adresser aux personnes qui gèrent les services Web et leur demander l'une des deux choses suivantes.

  1. Une clé temporaire, qui ne fonctionne que pour une fonctionnalité limitée. Cela permettrait aux utilisateurs de voir les fonctionnalités de base de votre application, mais certaines personnes ne mettraient jamais à jour la clé et n'utiliseraient que les fonctionnalités de base.

  2. Contactez les services Web pour savoir s'ils peuvent vous fournir une clé API spéciale pour votre application. Dans la version open source, les utilisateurs doivent entrer leur propre clé. Mais votre binaire pourrait utiliser une clé standard.

L'idée d'utiliser une configuration pour les clés d'api n'est pas nouvelle ou inédite. Les services Bit.ly le font. Et toutes les applications open source que je vois qui permettent d'utiliser Bit.ly demandent votre nom d'utilisateur et votre clé api avant que vous puissiez les utiliser.

Ce n'est pas différent ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X