2
2 Comments

How do you check user license status?

I developed a paid desktop app that requires users to sign in in order to use it. The app calls a REST API every couple of minutes to check user license status. This solution works but is quite inelegant.

I thought about replacing the license checking process with WebSockets, which theoretically would allow the app to instantly restrict access if the license status is inactive. Is there something I should be aware of? Is it a good or bad choice for this problem? What do you think about it, what do you use?

on October 14, 2020
  1. 2

    I don't have the answer but I'm just commenting as I'm interested in hearing about the options here as well. For now, we've done something similar to you but I hear you that it doesn't sound very efficient. There has to be a better way :)

  2. 1

    I have a similar issue/concern. I have a self-hosted option for my SaaS (https://packetriot.com) that customers can license for annually. I don't want users to run multiple instances so I had a heartbeat that would validate their license periodically.

    I license almost entirely to businesses, they're not huge fans of the heartbeat because the uptime of their instance is now hinged on my main websites uptime. I license a personal use as well, this is where I have "issues". So I've decided to just end personal use licenses.

    The direction I'm moving toward is to provide a semi-encrypted license key file. The key file is stored in a property in a JSON file, I use that, along with values baked into my software to decrypt an encrypted portion of the license key that stores the values that limits the software and indicates the expiration of the license.

    This doesn't solve using the license in multiple instance but now my heartbeat is not necessary for the software to run. The heartbeats would just tell me if there's any double dipping happening which I would just handle directly with the business.

    You can do this with a business customers but much harder to deal with if you're selling to consumers and have thousands of them.