Create a simple mechanism for end users to "log in" to your C++ application using user-based licensing.
How to Implement Offline Software License validation & Checks – Complete Guide
Most Software Vendors have a good conceptual understanding of how to work with a License Server to Node-Lock Licenses to devices, retrieve usage tokens, or how a floating license server works. We often see requirements or questions around how does LicenseSpring handle situations where an internet connection is not available to the computer / machine running the software, so I thought it could be useful to describe the problem of working with software licenses as we see it here at LicenseSpring, and describe our solutions offered.
Offline Licensing Considerations:
The term “offline licensing” could refer to different events when the application interacts with the licensing service. There are at least 4 events that an ISV might want to consider:
- Offline Software Activation – The process of binding (or node-locking) a license to a device that does not have an internet connection available for the activation process.
- Offline license checks – How does the application read what license entitlements are available to it if the record is not available online?
- License Updates offline – If there is a local copy of the license entitlements stored on the same machine running the application, is there a way to update these entitlements? (extend validity, add features allowed to run on the app?)
- Pushing License Usage Date to the License Server while offline: How does an ISV retrieve usage metering or other pertinent data when there is no internet access?
What Offline Licensing scenarios are important for an ISV?
If you are distributing your licensed software applications to external users, there are a few situations you will want to handle, or at least explicitly not handle. Here are a few of the most common of those situations:
- The device is intermittently offline, but activation can be done online. OEM, or companies that distribute hardware with a software component often deal with this situation. This is a very common situation we see in the real world.
- The device never has internet access, but can send and receive files: Devices in manufacturing plants, or software running on computers that are only connected to a private network often times can still use a file exchange system for software licensing purposes.
- The software will be running on a computer operating in a dark site, in an Air-Gapped Environment. Once it is installed, files cannot enter or leave the network / device it’s installed on. This is common in high security environments and security priorities always outweigh inconvenient node-locking mechanisms.
What tools does LicenseSpring provide for ISVs to handle Offline Licensing?
Throughout the years, it has become clear to us that there simply is no one-size fits all solution that is a slam dunk for every software vendor. As you might have guessed, we have worked hard to offer a diverse set of tools for handling such offline licensing scenarios.
- Offline license checks (the easy stuff): LicenseSpring maintains several SDKs in multiple programming languages compiled for different environments to easily interact with our Licensing Service. One of the basic capabilities of the SDKs is to copy the license entitlements locally to a file, at the moment of activation. The SDKs include methods allowing them to perform local license checks and ensure a license has not expired, which features should be locked / unlocked etc.
- Offline Activation – File Exchanges: If there is no internet access on the machine intending to run the licensed application, we have a self-serve offline activation portal that we make available to software vendors, which is available in our documentation. TL;DR: The vendor issues a license key to the end user, the end user enters the key into the app and generates a license Request file. The Request file is uploaded to the our offline license activation / deactivation portal, which returns a license file with the appropriate entitlements. This file is put back on the device and read by the SDK, completing the offline Node-Locked Activation process. This file cannot be transferred to different devices and allows for local license checks.
- Retrieving data from offline device: Our SDKs can cache data, such as consumptions for a particular feature that is being metered, or for device variables. This information can be sent back to the LicenseSpring cloud by deactivating the license offline, which generates a “deactivation file”. This file contains license usage data, and can then be uploaded on the same offline portal.
- Refreshing entitlements for an offline device: Once a License has been activated on a device, our platform stores the device fingerprint (a unique Identifier that can use a license). As such, if a license is updated (extension of the validity period, or the addition of certain features, for instance), then LicenseSpring can generate a license refresh file which can be used to update the local license file for that given device. This saves a few steps compared to activating a new license from scratch, and maintains continuity in the platform’s record for that license.
- Floating Servers for an offline network: We also provide license servers that can be activated and used on private networks, which can run in containers (like Kubernetes or Docker Compose), or compiled for Native Binaries. In this case, the client machines need only to handle the registration on the license server.
- Fully Air-Gapped: Some of our customers distribute software to end users that have very stringent Network restrictions, and they do not allow for any files to leave their computer network, so even our primary offline license activation solution will not work for them, since it requires a series of file exchanges to operate. In this situation, we offer an activation mechanism that works with a series of activation codes (strings) that are exchanged, and that can unlock pre-defined license policies which are distributed with the software package initially.
There you have it! I hope this guide was useful to give a general overview of what it takes to work with software license validation offline, and do not hesitate to reach out to us if you would like to try us out!