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 ?