Licensing desktop applications
Desktop applications run locally on a user’s operating system. User-based seat licensing (named user or concurrent floating seats) is the most common model, but 10Duke Enterprise also supports usage-based licensing for desktop applications. These models protect your software from unauthorized distribution while allowing offline access when needed.
10Duke Enterprise licensing solutions for desktop applications
A desktop application is used interactively by a person, and each user signs in before consuming a license.
A desktop application provides login to authenticate the user and acquire the access token needed to consume 10Duke licensing APIs. This is implemented using a secure protocol such as the OpenID Connect (OIDC) authorization code grant flow with PKCE, which opens the login prompt in the system’s default web browser or an embedded WebView.
If your customers authenticate their users through their own identity provider, 10Duke Enterprise can delegate the login to that provider: the application uses the same authorization code grant flow, and 10Duke Enterprise passes the authentication request on to the external provider, requiring no changes in the application. This supports customer identity federation and single sign-on (SSO). Alternatively, if the application integrates the external identity provider directly and already holds an ID token, it can use the OAuth 2.0 JWT bearer token authorization grant flow to exchange that ID token for a 10Duke Enterprise access token. The connection to the identity provider is configured in 10Duke SysAdmin.
The application then requests a license token by calling the 10Duke License Consumption API 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 licensing (named user or concurrent)
Use seat licensing to control how many users can run the application and on how many devices.
Count-based metered licensing
Choose count-based metered licensing to restrict execution based on discrete user actions, such as project saves, export actions, or processing tasks.
Time-based metered licensing
Choose time-based metered licensing to enforce cumulative usage limits across active application sessions.
Combine seat access with consumption metering
If you need to license seat access separately from metering consumption, for example, granting a named user a seat while also billing for export actions, create two separate product packages, each containing its own licensed item and license model.
Support offline usage
Desktop applications often need to run without an Internet connection, for example, on a laptop away from the network. Because a license token remains valid for the lifetime of its lease, the application can operate offline for as long as its token is valid.
See the full guidance on supporting offline usage.
Implement desktop licensing
To implement desktop licensing in 10Duke Enterprise, you can use the 10Duke .NET, Java, or C++ SDKs to handle token caching and validation automatically, or build a direct REST API integration. You can also use the 10Duke Login Application to handle OIDC identity management and the login interface for your users.
If a consumption request exceeds the configured limits, the License Consumption API returns a specific error code, for example, licenseQuotaExceeded (no seats available), licenseAssignmentMissing (a named-seat model where the user has no seat assignment), maxConcurrentSessionsExceed, 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. For virtualized environments, such as VDI or terminal-server deployments, see licensing in virtualized environments.