ペットプロジェクトの場合、いくつかの異なるWebサービスからのAPIキーを必要とするデスクトップアプリケーションを開発します。
私はこのアプリケーションを調べて準備し、オープンソースになり、これらのキーをどう処理するかという問題に遭遇しました。
問題はこれです:私の理解では、これらのAPIキーは、アプリケーションを使用している人やソースコードを表示/変更している人には見えないはずです。Webサービスの側から、これらのAPIキーは、APIにアクセスするアプリケーションを識別し、必要に応じて使用を許可/ブロックするために使用されます。これらのキーを受け取るためのほとんどのTOSでは、実際には、キーを世界と共有してはならないことが明示的に示されています。
現在、私のすべてのキーはハードコーディングされていますが、オープンソースアプリケーションで秘密キーの状況を処理する方法について行き詰まっています。
-キーがハードコーディングされたままの場合、ソースコードが公開されるとすぐに公開されます。
-コード配布からキーを含むソースファイルを実際に省略することはできません。それ以降、コンパイルされないためです。これは技術的に問題を解決しますが、新しい、受け入れられない問題をもたらします。
-キーを.iniまたは他の構成ファイルにプッシュし、そのファイルをパブリックコードリポジトリに含めない場合でも、アプリが機能するためには、アプリケーションのバイナリとともに配布する必要があります。私のキーは、ソースディストリビューションではなくアプリケーションディストリビューションに表示されます。改善ではありません。このINIファイルで利用しようとした暗号化体操は、コードを変更しようとする人にとっては複雑さを増すことになります。
それで、私のコードベース(現在バージョン管理のためにMercurialの下にあります)に関して、コードを公開できるようにすべてを管理するための最良の方法は何ですか?しかし私のキーは非公開のままですか?