本文へ移動
LICENTIVO / INTEGRATION

Java アプリにライセンス認証を組み込む方法

ライセンスのアクティベーションと保護されたエクスポートを Java 17+ アプリケーションに追加します。デバイスの認証情報、ハートビート、ポリシー制御のオフライン検証のために 1 つのクライアントを存続させます。

Java 17+更新日

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

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

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

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

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

公開検証中です。

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

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

Java · Quickstart.java
import licentivo.Client;

import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Map;

/** A single protected operation. Keep Client alive while your application runs. */
public final class Quickstart {
// BEGIN LICENTIVO PRODUCT
// Copy Product ID and all key ID/public key pairs from Console > Products > Signing public keys.
private static final String PRODUCT_ID = "YOUR_PRODUCT_ID";
private static final Map<String,String> TRUSTED_KEYS = Map.of("YOUR_KEY_ID", "YOUR_PUBLIC_KEY");
// END LICENTIVO PRODUCT

    private static String setting(String name, String fallback) {
        String value = System.getenv(name);
        return value == null || value.isEmpty() ? fallback : value;
    }

    static void exportReport(String path) throws Exception {
        // Replace this write with your existing, non-metered export operation.
        Files.writeString(Path.of(path), "A report generated by the licensed application.\n");
    }

    public static void main(String[] args) {
        // In a GUI, read the activation input. Later starts pass an empty key.
        try (var client = Client.openProduct(PRODUCT_ID, TRUSTED_KEYS,
                setting("LICENTIVO_LICENSE_KEY", ""), error -> System.err.println("Background verification: " + error.getMessage()))) {
            String feature = setting("LICENTIVO_FEATURE", "export");
            String path = setting("LICENTIVO_OUTPUT", "licensed-report.txt");
            if (setting("LICENTIVO_METERED", "").equals("1"))
                client.runMeteredFeature(feature, 1, setting("LICENTIVO_OPERATION_ID", ""), () -> exportReport(path));
            else
                client.runFeature(feature, () -> exportReport(path));
            System.out.println("License OK: " + feature + " is available\nExport completed: " + path);
        } catch (Exception error) {
            System.err.println(error.getMessage());
            System.exit(2);
        }
    }
}

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

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

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

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

Swing または JavaFX の場合、UI スレッドから認可を開始し、バックグラウンド通知を UI スレッドにマーシャリングします。所有クライアントをウィンドウの存続期間中存続させます。 try-with-resources は終了時にリソースを閉じます。

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
javac -cp licentivo-sdk-0.11.6.jar -d out Quickstart.java
$env:LICENTIVO_LICENSE_KEY = 'YOUR_LICENSE_KEY'
java -cp "out;licentivo-sdk-0.11.6.jar" Quickstart
Linux / macOS · Bash
javac -cp licentivo-sdk-0.11.6.jar -d out Quickstart.java
LICENTIVO_LICENSE_KEY=YOUR_LICENSE_KEY java -cp "out:licentivo-sdk-0.11.6.jar" Quickstart

よくある統合の問題

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

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

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

クラスが見つかりません: ランタイム クラスパス上で SDK JAR の両方を除外します。 Windows では、エントリ間にセミコロンを使用します。 Linux および macOS はコロンを使用します。