When implementing cloud-based floating licenses, it's important to consider the case where you allow multiple instances of your application to run on the same device.
If you bind the license to a non-instanced unique identifier, such as a Computer Name, a user could do the following:
- Start instance 1 of your app - this will check-out 1 license.
- Start instance 2 of your app - this will not check-out an additional license.
- Exit instance 1 of your app - this will check-in the license.
- At this point, the customer has instance 2 running without a license.
To prevent this abuse, we recommend picking a computer identifier that is instance-based. We suggest using a combination of a traditional computer identifier such as a Computer Name suffixed with a Process ID. For more details about using a user-defined computer identifier, refer to this article.
Note that the approach above will result in each instance consuming a floating seat.