API キーを使用するアプリケーションをオープンソース化する方法 [終了]

StackOverflow https://stackoverflow.com/questions/1983990

  •  22-09-2019
  •  | 
  •  

質問

ペット プロジェクトとして、いくつかの異なる Web サービスからの API キーを必要とするデスクトップ アプリケーションを開発しています。

私はこのアプリケーションをオープンソース化するために検討し、準備を進めてきましたが、これらのキーをどうするかという問題に遭遇しました。

問題は次のとおりです。私の理解では、これらの API キーは、アプリケーションを使用したり、ソース コードを表示/変更したりする人に表示されるべきではありません。Web サービス側から、これらの API キーは、API にアクセスするアプリケーションを識別し、必要に応じて使用を許可/ブロックするために使用されます。これらのキーを受け取るための TOS のほとんどでは、キーを世界と共有してはならないと実際に明示的に述べられています。

現在、すべてのキーはハードコーディングされていますが、オープンソース アプリケーションの秘密キーの状況をどのように処理するかについて行き詰まっています。

- キーがハードコードされたままの場合、ソース コードが公開されるとすぐに公開されます。

- コード配布のキーを使用してソースファイルを実際に省略することはできません。それ以来、コンパイルされません。これは技術的に問題を解決しますが、新しい、容認できないものを紹介します。

- キーを.iniまたはその他の構成ファイルに押し出し、パブリックコードリポジトリにそのファイルを単に含めていない場合でも、アプリが機能するためには、アプリケーションのバイナリで配布する必要があるため、私のキーは、ソース分布の代わりにアプリケーション分布に表示されます。改善ではありません。この INI ファイルに対して暗号化を試みると、コードを変更しようとする人にとっては複雑さが増すことになります。

では、私のコードベース (現在バージョン管理のために Mercurial の下にあります) に関して、コードは公開してもキーは非公開のままにするために、すべてを管理する最善の方法は何でしょうか?

役に立ちましたか?

解決

あなたが使用している言語を知らないが、例えばC / C ++では、あなたは、APIキーを使用してファイルをインクルードして、の持つ偽のファイルを追加する代わりに、ソースコントロールのそれを除外を追加したいです明示的に偽ののAPIキー。ほとんどの言語は、1またはファイルをインクルードする他の方法を持っています。

他のヒント

アプリでは構成ファイルを使用する必要があります。この構成ファイルは実行時にロードされるため、コンパイルには影響しません。これにより、ユーザーはバイナリをダウンロードしても、独自の API キーを使用できるようになります。

Kornel が言うように、偽の API キーを含むサンプル構成ファイルをソース管理に含めることができます。

別のオプションとして、Web サービスを実行している人に相談して、2 つのうちの 1 つを尋ねることもできます。

  1. 一時的なキー。限られた機能に対してのみ機能します。これにより、ユーザーはアプリの基本的な機能を確認できるようになりますが、キーを更新せずに基本的なものだけを使用する人もいます。

  2. Web サービスに問い合わせて、アプリケーション用の特別な API キーを提供してくれるかどうかを確認してください。オープンソース バージョンでは、ユーザーが独自に入力する必要があります。ただし、バイナリでは標準のものを使用できます。

API キーの構成を使用するという考えは、新しいものでも前代未聞のものでもありません。Bit.ly サービスがそれを実現します。そして、私が目にした Bit.ly の使用を提供するオープン ソース アプリケーションはすべて、使用する前にユーザー名と API キーを要求します。

これも違いはありませんか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top