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).
Please Note: NetLicensing services and client libraries do not include machine ID or fingerprint generation capabilities. It is the responsibility of the vendor to create a unique node identifier. For guidance, please refer to the best practices for generating machine IDs and fingerprints.
Validation
On validation, this licensing model uses the following validate parameters:
productModuleNumber
=<String> - product module using the Node-Locked licensing modelnodeSecret
=<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:
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
<?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:
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
<?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>
Warning Levels
Below are the default warning levels associated with this licensing model.
GREEN | YELLOW | RED |
---|---|---|
nodeSecretsUsed < 80% | nodeSecretsTotal < 10 AND nodeSecretsUsed >= nodeSecretsTotal OR nodeSecretsUsed >= 80% | nodeSecretsTotal >= 10 AND nodeSecretsUsed >= nodeSecretsTotal |