本文へ移動
LICENTIVO / INTEGRATION

Ruby アプリにライセンス認証と機能制御を実装する方法

Ruby gem をインストールし、顧客ライセンスをアクティブ化または復元し、Ruby ブロックで実際のエクスポートを保護します。ネイティブ コアは、許可、デバイスの認証情報、およびポリシーのハートビートを検証します。

Ruby 3.1+更新日

1. 製品とライセンスを準備する

ノードロック ライセンスと通常のエクスポート機能から始めます。基本的な認証フローが機能した後でのみ、従量制使用量を追加してください。

デバイス枠は現在のアクティベーション数で計算し、解除すると返却されます。通常ライセンスはオフラインでも枠を使用し、フローティングライセンスはリース満了時にも自動返却されます。

  1. [コンソール] > [製品] から製品 ID をコピーします。その製品の署名公開鍵を開き、すべてのキー ID/公開鍵のペアを初期化コードに貼り付けて、YOUR_PRODUCT_ID、YOUR_KEY_ID、および YOUR_PUBLIC_KEY を置き換えます。迅速な統合により、これらのパブリック コード定数を生成できます。製品構成ファイルは必要ありません。 SDK のデフォルトは https://www.licentivo.com. です
  2. クイック統合で、製品を作成または選択します。ポリシーでエクスポートという名前の機能を有効にし、テスト ライセンスを準備します。

2.SDKをインストールする

アプリのプロジェクトで以下のコマンドを実行するか、ビルド依存関係を追加して SDK 0.11.6 を導入します。パッケージマネージャーが SDK を取得するため、ソース ZIP の取得、手動展開、ローカルソースパスの指定は不要です。

Terminal
gem install licentivo-sdk --version 0.11.6

3. 実際の輸出を保護する

SDK スタートアップをアプリケーションのスタートアップ ハンドラーまたはアクティベーション ハンドラーに移動します。アクティベーション フォームからカスタマー キーを読み取り、自分の製品 ID と信頼できるキーを渡し、シャットダウンするまでクライアントを存続させます。実際のビジネス エントリ ポイントに RunFeature を置きます。レポート ライターを独自の操作に置き換えます。

Ruby 3.1+ · main.rb
# frozen_string_literal: true
require 'licentivo'

# BEGIN LICENTIVO PRODUCT
# Copy Product ID and all key ID/public key pairs from Console > Products > Signing public keys.
PRODUCT_ID = 'YOUR_PRODUCT_ID'
TRUSTED_KEYS = {'YOUR_KEY_ID' => 'YOUR_PUBLIC_KEY'}.freeze
# END LICENTIVO PRODUCT

def setting(name, fallback)
  value = ENV[name]
  value.nil? || value.empty? ? fallback : value
end

def export_report(path)
  # Replace this write with your existing export operation.
  File.write(path, "A report generated by the licensed application.\n")
end

begin
  # A GUI supplies the activation input. Later starts use an empty key.
  Licentivo::Client.open_product(
    PRODUCT_ID, TRUSTED_KEYS,
    setting('LICENTIVO_LICENSE_KEY', '')
  ) do |client|
    feature = setting('LICENTIVO_FEATURE', 'export')
    path = setting('LICENTIVO_OUTPUT', 'licensed-report.txt')
    if setting('LICENTIVO_METERED', '0') == '1'
      client.run_metered_feature(feature, 1, setting('LICENTIVO_OPERATION_ID', '')) { export_report(path) }
    else
      client.run_feature(feature) { export_report(path) }
    end
    puts "License OK: #{feature} is available\nExport completed: #{path}"
  end # Real app: keep the owning block/client alive until shutdown.
rescue StandardError => error
  warn error.message
  exit 2
end

4. シャットダウンするまでクライアントを存続させます。

このコマンドラインの例は、1 つの操作を実行して終了します。デスクトップ アプリケーションでは、起動時に 1 つのクライアントを開き、エクスポート アクションから機能コールバックを呼び出し、アプリケーションの終了時にのみクライアントを閉じます。

アクティブ化後、その後の起動では LICENTIVO_LICENSE_KEY を空のままにして、同じユーザーとキャッシュの場所にプライベート認証情報を復元できます。その認証情報をユーザーの application-data ディレクトリに保存します。閉じるとハートビートが停止し、同時接続枠が戻ります。通常の終了では、ノードロックされたデバイスが非アクティブ化されるべきではありません。

オフライン アクセスは、ポリシーで許可され、署名された許可が有効な場合にのみ利用できます。期限切れまたは拒否された機能はブロックされたままにする必要があります。従量制課金操作にはネットワーク接続が必要です。

open_with_license ブロックはクライアントを所有します。アプリケーション ループを有効期間内に保持し、保護されたアクションごとに run_feature を呼び出します。ビジネス コールバック内からクライアントを閉じないでください。 Ruby 例外は、SDK が失敗した操作を処理した後に伝播します。

5. 実行して結果を確認する

[コンソール] > [製品] から製品 ID をコピーします。その製品の署名公開鍵を開き、すべてのキー ID/公開鍵のペアを初期化コードに貼り付けて、YOUR_PRODUCT_ID、YOUR_KEY_ID、および YOUR_PUBLIC_KEY を置き換えます。迅速な統合により、これらのパブリック コード定数を生成できます。製品構成ファイルは必要ありません。 SDK のデフォルトは https://www.licentivo.com. です

  1. エクスポート アクセス権を持つ有効なライセンスによって licensed-report.txt が作成されることを確認します。
  2. LICENTIVO_LICENSE_KEY をクリアし、同じユーザー アカウントを使用して再度実行します。保存された認証情報が復元されます。
  3. LICENTIVO_FEATURE をライセンスに含まれていない機能に設定し、LICENTIVO_OUTPUT を新しいファイル名に設定します。プログラムは、そのファイルを作成せずに拒否を報告する必要があります。
  4. オフライン再起動は、許可され、期限切れになっていない署名付きの許可を使用してのみテストしてください。バックグラウンド更新エラーの後に失敗した機能チェックをバイパスしないでください。
Windows · PowerShell
$env:LICENTIVO_LICENSE_KEY = 'YOUR_LICENSE_KEY'
ruby main.rb
Linux / macOS · Bash
LICENTIVO_LICENSE_KEY=YOUR_LICENSE_KEY ruby main.rb

よくある統合の問題

製品 ID、すべてのキー ID/公開鍵のペア、および顧客のライセンス入力を確認します。公開検証キーは製品に属します。顧客のライセンスと保存されたデバイスの認証情報は別のものです。開発テスト キーやベンダー管理 API キーを配布しないでください。

機能が拒否されました、デバイス制限に達したか、ライセンスが期限切れになりました: コンソールでライセンスとポリシーを検査し、顧客に SDK エラーを表示します。認証が失敗した場合は、エクスポート関数を呼び出してはなりません。

RunFeature は機能へのアクセスをチェックします。従量制のバリアントは、設定された使用量を予約および決済します。実際のビジネス ジョブごとに安定した操作 ID を使用し、中断されたジョブを回復する前にその永続的な結果を検査します。

licentivo をロードできません: gem のインストールとプログラムの実行が同じ Ruby 環境を使用していることを確認してください。 Windows でソース ビルドを行う場合は、LICENTIVO_CURL_ROOT を設定し、一致する libcurl DLL を PATH で使用できるようにします。