Device licensing
With device licensing, 10Duke Enterprise issues software licenses to a specific device (such as a hardware client or embedded device) rather than an individual user. Anyone with access to the authorized device can use the software without registering as a user. This model suits embedded systems, medical equipment, industrial machinery, shared workstations, as well as desktop and mobile applications used by a device identity.
10Duke Enterprise solutions for device licensing
In device licensing, the license is consumed directly by the device. The end users operating the device do not need their own 10Duke Enterprise accounts.
To connect a device, 10Duke Enterprise recommends registering the device client using an invitation flow. An invitation is sent to a device administrator, who opens the invitation link to register the device. For desktop applications, this link can use a custom URI scheme to automatically open the application and complete registration. See the developer guide for the full invitation flow. If email invitations aren’t practical, for example, during automated software installation or hardware imaging, you can instead pre-provision device clients programmatically and assign them to device client groups using the 10Duke Identity Management REST API.
Once registered, the device client acts as an OAuth client. The client application authenticates with 10Duke Enterprise using the secure client credentials grant flow, and receives an OAuth 2.0 access token.
Once authenticated, the client application checks the 10Duke License Consumption API to verify and consume licenses based on your configured license model. A license model restricts consumption based on a single credit type: seat count, use count, or use time. Choose the model that matches your billing structure.
Seat-based or node-locked licensing
Use a seat to control which hardware is authorized to run the software.
To node-lock the license, pair the constraint with concurrency licensing.
Count-based metered licensing
Choose count-based metered licensing to restrict execution based on units consumed by the device, such as processing cycles, diagnostic runs, or operational cycles.
Time-based metered licensing
Choose time-based metered licensing to enforce cumulative runtime limits over the license period.
Combine seat access with consumption metering
If you need to node-lock a device while also metering how much it consumes, for example, locking a diagnostic machine to specific hardware and billing per diagnostic run, create two separate product packages, each containing its own licensed item and license model.
Support offline usage
Devices frequently run without a reliable Internet connection. Because a license token remains valid for the lifetime of its lease, a device can operate offline for as long as its token is valid.
See the full guidance on supporting offline usage.
Implement device licensing
To implement device licensing in 10Duke Enterprise, you can use the 10Duke SDKs for supported runtimes, or build a direct REST API integration.
When node-locking a license, the hardware ID (hw) is the fingerprint that identifies a device. For more details, see generate hardware IDs.
Handle consumption errors
If a consumption request exceeds the configured limits, the License Consumption API returns a specific error code, for example, licenseQuotaExceeded (no seats available), maxConcurrentSessionsExceed (the per-seat device limit is reached), anchorLockedToAnotherLicense (a hardware lock prevents consumption), maxUseCountExceed, or maxAggregateUseTimeExceed, depending on the constraint applied. See error codes for the full list your application should handle.
For detailed instructions on configuring custom rules and tracking modes in 10Duke SysAdmin, see defining settings for custom license models.