You're viewing documentation for release 6 (LTS). Looking for a different release?

Consume a license

You use the same kind of a request to the 10Duke License Consumption API endpoint /authz/ to both consume a license and to renew an existing license lease.

The only difference in the parameters is that depending on the license model, the renewal request may also need to specify the lease ID included in the license token.

You can request license consumption or lease renewal for one or multiple licensed items in a single request.

Both requests return the same response.

See how to use 10Duke License Consumption API to consume a license and renew an existing license lease.

Generating hardware IDs

When implementing hardware-locked licensing, the hardware ID (hw) serves as a unique fingerprint for a client device. A well-designed hardware ID must balance uniqueness (to prevent license sharing) with stability (to prevent valid users from losing access due to minor system changes).

Core principles for hardware IDs

We recommend that a hardware ID follows these core principles:

  • Privacy-preserving

    Hardware attributes are combined using a one-way cryptographic hash. The resulting value must be opaque and must not expose raw data that can be used for user tracking or identification.

  • Unique

    Different physical devices produce different hardware IDs, ensuring a very low probability of collisions.

  • Deterministic

    The same hardware, using the same input attributes, must always produce the same hardware ID.

  • User-independent

    The ID is tied to the machine, remaining identical for every user account on that device.

  • Operating system–scoped

    A device running multiple operating systems (for example, a Windows and Linux setup are treated as separate identities) can legitimately produce different IDs for each OS.

In addition, a hardware ID must remain stable across common system modifications. If a hardware ID changes while a license lease is active, the lease becomes invalid. The ID should be resilient against:

  • OS upgrades, patches, or re-installations.

  • Common hardware upgrades, such as adding extra memory (RAM) or secondary hard drives.

  • Unauthorized alterations; the ID must be difficult for end users to change without significant system modifications.

Impact of hardware ID changes on licensing

When a license lease is locked to a specific hardware ID, any change to that ID during the lease period invalidates the lease. In such cases, note the following:

  • The existing lease cannot be extended.

  • A new lease must be obtained.

  • An additional license seat may be consumed.

For this reason, select hardware features carefully. Avoid using attributes that are changed frequently or are easily manipulated, such as MAC addresses. Using unstable attributes can lead to unnecessary license invalidations, increased support requests, and easier license abuse. Instead, use more robust attributes, such as the motherboard ID.

Hardware IDs in virtualized environments

When deploying applications in virtualized environments, such as virtual machines (VMs), containers, or cloud instances, hardware IDs require special consideration. In a virtual environment, hardware attributes can change, which may lead to unintended license lease invalidations and create opportunities for license misuse. To control license use and prevent misuse, lease chaining is often used. See more information on enforcing lease chaining in the ConcurrentSessions constraint in custom license models.

In a virtualized setup, the stability of a hardware ID depends on which attributes are used for the fingerprint. To maintain a stable ID within a VM, the fingerprint must prioritize attributes that can be controlled by the VM host. Examples of such stable attributes include the virtual CPU ID, motherboard ID, or virtual disk serial ID.

10Duke Enterprise SDK support for hardware IDs

The 10Duke Enterprise SDK for .NET provides a built-in hardware ID generator that follows the principles described above. For example, it includes platform-specific implementations for Windows, macOS, and Linux that can be enabled during SDK initialization. Once configured, the generated hardware ID is automatically included in licensing API requests.

See more in 10Duke Enterprise SDK for .NET user guide.