web-dev-qa-db-ja.com

電子アプリケーションのプロダクトキーを作成することはできますか?

デスクトップアプリケーションを作成して、プロダクトキーまたはシリアル番号を公開できるようにしたい。ユーザーがアプリケーションを使用する前に、プロダクトキー/シリアル番号の入力を求められます。

XXXX-XXXX-XXXX-XXXXのようなキーを提供するMicrosoftOfficeに似ています

私が持っているアイデアは、ライセンスに基づいてアプリを販売することであり、すべてのデバイスにプロダクトキーを提供することは、アカウント(ユーザー名とパスワード)よりも専門的であるように思われます。

だから私の質問は:

1)electronでこれを達成することは可能ですか?

2)シリアル番号(実行可能な場合)またはアカウントのどちらを選択する必要があるかを教えてください。またはより良いオプションはありますか?

3)2番目の質問に答えた場合。理由を教えてください。

10
Behrouz Riahi

最初の質問yesについては、Electronアプリのライセンスを取得するためのプロダクトキーを確実に実装できます(私は自分で数回実行しました)。また、2番目の質問については、関連するライセンスを持つユーザーアカウントを用意することをお勧めします。ユーザー2はXとYを実行できますが、ユーザー2はXのみを実行できます。

では、なぜ、ユーザーアカウントを提供することにはどのような利点があるのでしょうか。

まず、ユーザーアカウント内ですべてのバックグラウンドで処理できるため、ライセンスキーを追跡する必要がなくなります(特にキーを紛失した場合は非常に煩わしいです)。彼らがしなければならないのはログインすることだけです(彼らがすることに慣れているように!)そしてあなたは彼らのユーザーアカウントに関連付けられているすべてのライセンスを照会することができます。

そしておそらく最も重要なのは、ユーザーアカウントを実装することで、顧客にセルフサービスのライセンスアクティベーションを提供できることです。つまり、すべてのライセンス(つまり、ユーザーごとに複数のライセンスが存在する可能性があることに注意してください)が単一のユーザーアカウントに関連付けられているため、たとえば、次のように促すことができます。認識されないマシンでアプリケーションを起動したときに新しいライセンスを購入するか、追加機能用の製品「アドオン」を簡単に提供します。

また、独自のライセンスシステムの作成に特に熱心ではなかった場合に備えて、私は Keygen というソフトウェアライセンスAPIの創設者です。これにより、ホストをしなくてもすばやく起動して実行できます。独自のライセンスサーバーを作成します。私はインディー開発者、特にデスクトップアプリを構築する開発者を念頭に置いてKeygenを構築しました。私は最初のElectronアプリを作成してからこのサービスを作成しましたが、当時は(驚くべきことに)そのようなサービスは存在しなかったので、かなりイライラしていました。だから私は自分自身と他の開発者のために1つ書いた。

Keygenは単なるAPIであるため(つまり、アプリにパッケージ化する必要のあるソフトウェアはありません)、Keygenは任意のプログラミング言語で使用できます(したがって、ここではJavaScriptだけに限定されません)。最も単純な形式で、例えばユーザーアカウントはなく、ライセンスキーのみで、Keygenを使用してライセンスキーを検証するのは、単一のAPIエンドポイントを押すのと同じくらい簡単です。

curl -X POST https://api.keygen.sh/v1/accounts/dc7ac1f74ce0/licenses/actions/validate-key \
  -H 'Content-Type: application/vnd.api+json' \
  -H 'Accept: application/vnd.api+json' \
  -d '{
        "meta": {
          "key": "B8A5-91D7-CB9A-DAE4-4F6E-1128"
        }
      }'

また、前述のように、Keygenは、ライセンス管理に加えて、ユーザーアカウントを管理するためのAPIエンドポイントも提供します(これも、はるかに優れたUXであるため、お勧めします)。これにより、ライセンスをユーザーに関連付けたり、マシンを追跡したりできます。ユーザーごとに複数のライセンス(機能ライセンスなど)、マシンロックライセンスを実装する場合、または各ユーザーのマシン数を知りたい場合に非常に便利です。

それがあなたの質問に答え、あなたにいくつかの洞察を与えることを願っています。 Electronアプリのライセンスを数回実装したので、他の質問に喜んでお答えします。 :)

9
ezekg
  1. はい。ただし、ソフトウェア登録メカニズムに関しては、IT IS HARDであり、多くのテストも必要です。
  2. ユーザーの90%がインターネットにアクセスできる場合は、必ずユーザーアカウントまたはいくつかのOAUTH 2.0プラグアンドプレイ(facebook/gmail/whateverでログイン)を使用する必要があります)
  3. 私は暗号とfsモジュールを使用してソフトウェアライセンスアーキテクチャをゼロから構築しました、そしてそれはかなりの旅(年)でした!

ソフトウェアの適切な登録メカニズムを最初から作成することはお勧めしません。ソースコードが比較的公開されているため、electronはそれを難し​​くします。

そうは言っても、本当にそのようにしたいのであれば、bcryptはこれ(ハッシュ)が得意であり、ハッシュするための一意のユーザー識別子が必要です。また、ユーザーライセンスを保存できる何らかの永続性(できればファイル)も必要です。そして、ハッシュをハッシュするか、ハッシュの小さなビットを別々のファイルに保存することによって、ハッシュに使用しているソルトを非表示にする必要があります。

これはライセンス供与の良い出発点になりますが、完全に保護されるにはほど遠いです。

それが役に立てば幸い !

2
Sam

アプリにライセンスキーベースのソフトウェアライセンスを追加するのに役立つサービスはたくさんあります。また、顧客がキーを再利用しないようにするには、強力なデバイスフィンガープリントアルゴリズムが必要になります。

試してみることができます Cryptlex 。高度なデバイスフィンガープリントアルゴリズムを備えた非常に堅牢なライセンスソリューションを提供します。 GithubNode.js の例を確認して、electronアプリにライセンスを追加できます。

1
adnan kamili