2017-06-22 9 views
2

私はデスクトップアプリケーションを構築し、プロダクトキーまたはシリアル番号を公開することができます。ユーザーがアプリケーションを使用できるようになる前に、プロダクトキー/シリアル番号の入力を要求されます。 Microsoft Officeのと同様に電子アプリケーション用のプロダクトキーを作成することはできますか?

彼らはXXXX-XXXX-XXXX-XXXXのようなキー

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

はので、私の質問は以下のとおりです。

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

2)シリアルナンバー(実行可能な場合)またはアカウントに行ってください。またはより良いオプションがありますか?

3)2番目の質問に回答した場合。どうして?

答えて

4

最初の質問の場合、はいとすると、電子アプリのライセンスを取得するためのプロダクトキーを間違いなく実装することができます。 2番目の質問では、関連するライセンスを持つユーザーアカウントを持つことをおすすめします。ユーザー2はXとYを、ユーザー2はXのみを実行できます。

なぜ、どのような利点がユーザーアカウントにありますか?

まず、ユーザーとその顧客がライセンスキーを追跡する必要がなくなります(特に失ったときには迷惑になります)。その理由は、すべてがユーザーの背後で処理されるためですアカウント。彼らがやらなければならないことは、ログインに慣れていることです(彼らはこれまでと同じように!)、ユーザーアカウントに関連付けられているすべてのライセンスを照会することができます。

おそらく最も重要なことに、ユーザーアカウントを実装することで、お客様にセルフサービスのライセンス認証を提供することができます。即ち、それらのライセンスの全て(すなわち、ユーザーあたり複数のライセンスの可能性)が1つのユーザーアカウントに関連付けられるようになりました。認識されていないマシンでアプリケーションを起動したときに新しいライセンスを購入したり、追加機能用の製品「アドオン」を簡単に提供することができます。

あなた自身のライセンスシステムの作成に特に関心がない場合に備えて、私はKeygenというソフトウェアライセンスAPIを創設しています。独自のライセンスサーバー。私はインディー開発者、特にデスクトップアプリケーションを開発する開発者を念頭に、Keygenを構築しました。私はもともと私の最初の電子アプリを書いて、そのサービスがその時に存在していた(驚いたことに)現実に来て、それは私にとってはむしろイライラしていた。だから私は自分自身や他の開発者のために書きました。

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うとしてお勧めします)、ユーザーアカウント、ユーザー(たとえば、フィーチャーライセンス)、マシンロックライセンス、または各ユーザーのマシン数を把握したい場合に使用します。

私は、あなたの質問に答えると、あなたにいくつかの洞察力を与える願っています。他の質問にお答えいただければ幸いです。電子アプリのライセンスを数回実装しました。 :)

+0

+1と言っているようにアカウントを使用しています。ユーザーがKeygen APIを使ってインターネットポスト初期ワンタイムライセンスの検証をしていないと、どうすればライセンスをオフラインで維持できますか? – ajay

+1

は、ユーザーが最初にライセンスキーを入力すると、あなたがそれまたはローカルストレージのいくつかのタイプで、それの表現を格納することができ@ajay、およびキーは、ローカルストレージに存在しない場合のみ、ライセンスキーの入力を求めます。彼らキーが最終的に有効期限が切れた場合、ユーザーがインターネットへのアクセスを持っているときだけでなく、ローカルストレージに有効期限を保存したり(例えば、各起動時に)キーを再検証すると良いでしょう。 – ezekg

+0

ありがとう、@エゼック。また、デプロイされたパッケージのライセンスの検証/ロジックのJavaScriptコードの変更を防ぐ方法を教えてください。 – ajay

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

ソフトウェアの登録メカニズムを一から作ることはお勧めできません。電子は、ソースコードが比較的公開されているため、難しくなります。

bcryptはこの(ハッシュ)で良いです、あなたはハッシュするために一意のユーザー識別子が必要です、あなたが保存することができますいくつかの種類の永続性(好ましくはファイル)が必要ですあなたはハッシュをハッシュするか、またはその小さなビットを別々のファイルに保存するかのいずれかで、ハッシングのために使用している塩を隠す必要があります。

これはライセンスの出発点となりますが、完全に保護されているとは限りません。

希望すると助かります!

+0

は答えてくれてありがとう。私はあなたの答えを読んだ後にいくつかの質問があります。 1)ドラゴンズとは何ですか? 2)ユーザーにユーザー名とパスワードを与える機関のためにアプリを実装したいので、ソーシャルネットワークのログインは私が探しているものではありません。それが言われた後、彼らがインターネットアクセスを持っている場合、ユーザーアカウントを提供することは依然として望ましいですか? –

+0

私は遅刻して申し訳ありません(移動住宅)0_0 –

+0

はい、ソフトウェアライセンスについて忘れて、ライブラリの助けを借りてアカウントログインに行くと、時間を節約できます。 – Sam

関連する問題