How to use node locked licenses

I am building a test application with LexActivator. So far, all works fine. I can activate floating licenses, read meta data from the licence and invalid licencing actions are actually blocked.

Now I am trying to create and activate a node locked license, which I expect to be the a license that once activated on a given computer, cannot be activated anywhere else. So far, the lock is not working and activation still works on multiple systems.

The license has the following options:
-Type: node locked
-Fingerprint Matching Strategy: exact

My application uses the exact same workflow as it would for a floating license. I wrote no new code and I am only running it with a different key for argument. It is heavily inspired by the github example.

Any ideas?

Regards!

Hi,

You should almost always set the Fingerprint Matching Strategy to fuzzy.

How many activations did you allow for the license? If it worked on multiple machines could you see multiple activations for the license key in the dashboard?

My application uses the exact same workflow as it would for a floating license. I wrote no new code and I am only running it with a different key for argument. It is heavily inspired by the github example.

Are you refering to on-premise-floating or hosted-floating?

I allowed illimited activations, but since it is node lock, these should succeed on only one system. I am using licences hosted on the Cryptlex site.

Here is the workflow of my executable:

  • Activate node locked license
  • Verify activation
  • End the test by deactivating the license

Could it be related to the deactivation? Does deactivating cancel the fingerprint?

One more clarification: I would exect activation to fail if I run my test application on a second computer, because the initial activation was already done on another system…

Does the activation process RESET the fingerprint to the one on the current machine?

Yes, deactivating the activation frees the activation slot of the license to allow license activation on some other machine. For node locked this function should only be used to allow transfering of licence to some other machine.

The number of machines on which a license can be activated is determined by allowed activations property, which you would usually set to one.

Just remove the Deactivate License call and everything will work as per what you expected.

I did that, and it fails to activate on the second computer as extected, but it has more to do with the activation limit set to 1 than the node lock.

So, if I get it right, the best way of using the node locked feature would be to:

  • Set the number of activations to 1
  • Set the number of deactivations to 0
  • Set the type to node lock

Then, what is the difference between:

  • a node locked license
  • a floating license with activations limited to 1, and deactivations limited to 0.

The only type of situation where node locked offers something more would be if the user activates legitimately on computer a computer, then moves or copies the hard drive elsewhere. Am I right?

Node-locked is actually associated with license activation and not the license directly.

Suppose your customer has a laptop and a PC, you may provide a single license key to your customer with two allowed activations, and your customer can activate the key on laptop and PC. When it happens you can see two activations with the machine names in the dashboard for that license. So this license key has been locked to two machines and cannot be used on a third machine. So, having 2 or more allowed activation also means the license is node locked, it’s just locked to 2 or more machines.

https://docs.cryptlex.com/getting-started/licensing-models#node-locked-licenses

For node-locked you should set allowed deactivations to any value greater than 0, 3 is recommended. It can save you on support requests from your customer. Suppose the above customer buys a new laptop, if you have implemented DeactivateLicense() in your app, and there is a button or a menu option which user can use to deactivate the license, user can easily deactivate it on the older laptop (freeing an activation slot on license) and reactivate it on new laptop without contacting you. If you set allowed deactivations to 3, the customer can do it three times, on the fourth attempt, the customer would need to contact you.

Floating licenses are different from node-locked, as they are time-based, they auto-deactivate (if lease time is over and the lease is not refreshed), even if you don’t call DeactivateLicense(). So if lease length is 30 minutes, and you close the app, without calling DeactivateLicense(), it will automatically deactivate after 30 minutes from the client as well as the server. Having called DeactivateLicense() would have saved 10 minutes, so some user could have fetched it earlier instead of waiting for 10 minutes (given all activation slots were already taken).

The only type of situation where node locked offers something more would be if the user activates legitimately on computer a computer, then moves or copies the hard drive elsewhere. Am I right?

Copying hard drive won’t move the license, and it will return an error code on the new machine, as fingerprint won’t match. You should almost always use node-locked. Floating licenses have a specific use case which is discussed in the docs:

https://docs.cryptlex.com/floating-licenses/overview

So unless you have this use case just stick to the node-locked licenses.