A minimal Electron v12 + React v17 app built with Parcel, showcasing how to implement an in-app software licensing portal with the following functionality:
- License key validation
- Device fingerprinting and activation
- Device management and deactivation
- Signature verification
- Auto-updates with electron-builder
First up, configure a couple application variables. The values below, embedded
within the app, are for our demo
account. Feel free to find/replace to your
own account's values.
# Your Keygen account's DER encoded Ed25519 verify key
KEYGEN_VERIFY_KEY="MCowBQYDK2VwAyEA6GAeSLaTg7pSAkX9B5cemD0G0ixCV8/YIwRgFHnO54g="
# Your Keygen account ID
KEYGEN_ACCOUNT_ID="1fddcec8-8dd3-4d8d-9b16-215cac0f9b52"
# Your Keygen product ID
KEYGEN_PRODUCT_ID="7071feff-b5f3-434a-83c1-3ab3f3592325"
Next, install dependencies with yarn
:
yarn
Then start the app in dev mode:
yarn dev
Visit your dashboard and create a new policy with the following attributes:
{
"requireFingerprintScope": true,
"maxMachines": 5,
"concurrent": false,
"floating": true,
"strict": true
}
The maxMachines
value can be whatever you prefer. The example should
also work for a non-floating policy.
In order to allow a license to perform machine activations and deactivations, you will need to create a new activation token. Activation tokens allow a limited number of machine activations for a single license, which make them ideal for performing activations from a client-side environment.
metadata
attribute under the token
key:
{
"metadata": {
"token": "activ-abc8f8323c680b93082fc5fdb3abcb31v3"
}
}
We're doing this so that the end-user does not need to worry about entering the activation token, or that it even exists. Alternatively, you could adjust the code to prompt the user for this value, similary to how we're already prompting for their license key.
To build the app:
yarn build
To run the latest build:
yarn start
To package and publish the app:
yarn dist
Reach out at support@keygen.sh if you have any questions or concerns!