I am looking for advice how to architect licensing for a .NET library. I am not asking for tool/service recommendations or something like that.
My library can be used in a regular desktop application, in an ASP.NET solution. And now Azure services come into play.
Currently, for desktop applications the library checks if the application and company names from the version history are the same as the names the key was generated for. In other cases the library compares hardware IDs.
Now there are problems:
- an Azure-enabled web-application can be run on different hardware each time (AFAIK)
- sometimes the hardware ID for the same hardware changes unexpectedly
- checking the hardware ID or version info might not be allowed in some circumstances (shared hosting for example)
So, I am thinking about what approach I can take to architect a licensing scheme that:
- is friendly to customers (I do not try to fight piracy, but I do want to warn the customer if he uses the library on more servers than he paid for)
- can be used when there is no internet connection
- can be used on shared hosting
What would you recommend?
4
It’s not perfect, but here’s what I would do. I would send a message somewhere to one of your servers each time a new hardware ID pops up. You’d keep track of how many hardware IDs each user has. If they’re registered for 5 servers, but there appears to have been 20 hardware IDs used in the past hour, that’s a bit suspicious. Email them and warn them that they might be using this outside of the terms of the license.
Note: this in NO way to fight piracy. This is to provide a system so you can ensure your client know if they are possibly going outside of their license (it sounds like you’re marketing to businesses, which typically really care about this and lawsuits)
1