Link

Node-Locked

Overview

Node-Locked licensing model binds product to a node specific secret, like hash of hardware related data, hardware id (dongle), user login data, or just a generated random string - feel free to invent your own sources for the secret. Important is that the same secret is presented for the same node on every validation. Certainly, it should be hard enough for a malicious user to fake this secret.

The model has two modes of operation, configurable in the product module settings:

 

Mode Description
Predefined The secret is generated by the vendor and passed on to the licensee (e.g. in a hardware dongle, or text-based encrypted key). At the same time vendor explicitly stores the secret in the corresponding license property via Console or API (see Licenses section below). Licensee validation will only succeed if the value provided in the nodeSecret validate parameter matches one of the stored ones. Since the secret must be stored in a license before the first validation, this mode can’t be combined with “Auto-create Licensee” mode.
Client This mode is similar to the Predefined, but secrets must not be stored in advance, instead a secret provided in the nodeSecret parameter on validate call will be stored if seen for the first time, and the number of already stored secrets is below the quota. This allows automatic locking to any secret provided by the licensee, typically hash of some HW related data (e.g. MAC address, CPU serial number, etc). This mode can be used with hardware dongle too: the dongle holds the secret, but it is only bound to the specific license on the first validate.

License Templates

This licensing model requires one or more license templates of type QUANTITY, each specifying the quantity of allowed node secrets (via quota property) and a purchase price.

Multiple license templates allow to configure discounts, e.g.:

  • 10 nodes for 5 EUR
  • 100 nodes for 45 EUR
  • 1000 nodes for 400 EUR

Specific properties:

  • Integer quota (required) - specifies the quantity of node secrets, which is assigned by default to the licenses created off this template.

Licenses

Specific properties:

  • Integer quota (required) - specifies the quantity of nodeSecrets, provided by this license. Normally it is copied from the corresponding property of the license template, but can be changed later for each license individually. When multiple QUANTITY licenses purchased, the total quantity of nodeSecrets is the sum of quota of all active licenses.
  • String nodeSecret<N> (where <N> is the number in range [0..quota-1]) - stores secrets for this license (up to quota).

Validation

On validation, this licensing model uses the following validate parameters:

  • productModuleNumber=<String> - product module using the Node-Locked licensing model
  • nodeSecret=<String> - specifies unique secret.

Validation returns value:

  • Boolean valid - true if the value in nodeSecret validate parameter matches one of the stored ones or the number of already stored secrets is below the total quota in Client mode.

Predefined mode example:

Request Predefined mode
POST https://go.netlicensing.io/core/v2/rest/licensee/ITEST-DEMO/validate
Accept: application/xml
Content-Type: application/x-www-form-urlencoded

productModuleNumber0=MTEST-DEMO&nodeSecret0=SecretGivenByVendor
Response
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:netlicensing xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:ns2="http://netlicensing.labs64.com/schema/context" ttl="2020-05-07T21:43:22.638Z">
    <ns2:infos/>
    <ns2:items>
        <ns2:item type="ProductModuleValidation">
            <ns2:property name="productModuleNumber">MTEST-DEMO</ns2:property>
            <ns2:property name="valid">true</ns2:property>
            <ns2:property name="productModuleName">PREDEFINED mode</ns2:property>
            <ns2:property name="licensingModel">NodeLocked</ns2:property>
        </ns2:item>
    </ns2:items>
</ns2:netlicensing>

 

Client mode example:

Request Client mode
POST https://go.netlicensing.io/core/v2/rest/licensee/ITEST-DEMO/validate
Accept: application/xml
Content-Type: application/x-www-form-urlencoded

productModuleNumber0=MTEST-DEMO&nodeSecret0=HardwareOrGeneratedSecret
Response
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:netlicensing xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:ns2="http://netlicensing.labs64.com/schema/context" ttl="2020-05-07T21:43:22.638Z">
    <ns2:infos/>
    <ns2:items>
        <ns2:item type="ProductModuleValidation">
            <ns2:property name="productModuleNumber">MTEST-DEMO</ns2:property>
            <ns2:property name="valid">true</ns2:property>
            <ns2:property name="productModuleName">CLIENT mode</ns2:property>
            <ns2:property name="licensingModel">NodeLocked</ns2:property>
        </ns2:item>
    </ns2:items>
</ns2:netlicensing>