Air-Gapped License Activation
Our concept for air gap license activations is similar to the offline activation process, with the added constraint that files cannot leave the private network after the licensable software has been installed/deployed.
Only key-based licenses can be activated as air-gapped licenses for now.
- Add the air-gapped API key to the client SDK
- Create an air-gapped license (either from a license policy or overriding an existing one)
- Generate an initialization code with the license key from the air-gapped portal
- Enter the license key and initialization code in the client application
- Generate an activation code using the SDK
- Generate a confirmation code from the air-gapped portal
- Complete the activation process by entering the confirmation code in the SDK.
The air-gapped activation portal can be found here: airgap.licensespring.com
Contact us to white label the air-gapped portal for your own subdomain!
The key pairs can be regenerated, however the new public key would need to be re-entered into the SDK. The air gapped public key should be obfuscated inside of the SDK.
The key algorithm used for air gap company account keys and air gap license keys is EcDSA. You can find the air-gapped private and public keys under "account settings" > "keys".
This step is essential for Air-Gapped licenses
On the product detail page, go to the License policies tab and click on the "add license policy" button.
To mark policy as air-gapped switch the "set as air-gapped" toggle.
Air gap license policies cannot be edited or deleted after they are created. The same is true for any air gapped license that has been issued.
Start the process as you would with any license: Click on the licenses tab in the left navigation > "Issue Licenses". When adding a product to the order, toggle "Set as air-gapped". All of the policies selectable from the drop-down will only be the policies defined as air-gapped:
The air gapped license is now created
The air gap portal for license activation can be found at: airgap.licensespring.com
The process of activation is done in 3 steps including actions on server (portal) and SDK.
Navigate to the air-gap portal, and click "Initialize air-gapped activation", enter the license key:
The portal will return an initialization code which, along with the license key needs to be entered in the SDK.
There is a QR code available to make the process of copying this information easier:
This initialization_code must be imported to the SDK alongside with the license key. The SDK will verify the initialization_code and if successful will return the activation_code, along with the hardware_id values to the user so that user can take those strings back to the server.
On the air-gap portal, click "Enter Air-Gapped Activation Code"
Enter the license key, hardware_id, and activation_code
The portal will return a policy ID and a confirmation code, as well as a QR code to make it easy to copy/paste this information.
At this point, LicenseSpring will consider this license has been fully activated, even if the confirmation code and policy ID were not entered into the client application
Important: If incorrect data (e.g., an invalid policyFilePath) is entered into the client application during the confirmation step, the LicenseSpring SDK will throw an error, and no local license file will be created on the device. However, the license will still appear as "active" in the LicenseSpring portal because the server cannot verify the device's state in an air-gapped environment.
To prevent losing a license due to such errors, we recommend:
- Saving the QR code or JSON data provided during the confirmation step. This allows users to re-enter the correct data in the client application if the first attempt fails.
- Double-checking all inputs (license key, policy file path, activation code) before proceeding with the activation process in the SDK.
Enter this information into the client application, and the activation process should be complete!
Airgap deactivation follows the same flow, you just need to toggle the initial view to Deactivation.
1. What happens if the activation process fails on the end device?
- If an air-gapped license activation fails on the device (e.g., due to an incorrect policyFilePath or confirmation code), the SDK will throw an error, and no local license file will be created. However, the license will still appear as "active" in the LicenseSpring portal. This behavior is due to the offline nature of the device and the inability of the server to validate the device's state. Ensure all inputs are correct before submitting the activation request.
2. Can I reset or reuse a license that failed to activate locally?
- Currently, licenses marked as "active" in the LicenseSpring portal cannot be reactivated unless they are deactivated first. For this reason, it is critical to safeguard the JSON data or QR code provided during the activation process so you can re-enter it into the client application if an error occurs.