I'm trying to figure out how to implement my licensing policy technically. I'm guessing there are typical approaches, but it seems hard to find something online.
My approach would be to look at authentication, signing and encryption topics. I'm currently thinking along the lines of having the software get permission for certain actions from a central module over some channel that provides mutual proof of identity.
I charge for my licenses by the capacity (how much data, how many users) of the software rather than by the number of instances that are installed. I'm aiming for a solution that customers can install on as many machines as their load balancing and failover scenarios require.
One problem with this scenario is that I can't really lock down anything to a specific hardware item on installation. This is very much what I want as far as the user experience goes, but I'm a little at loss as to what alternatives there are.
Of course, there's always the easy way, which is to simply store the number of users etc still available somewhere and make tampering with that number a violation of the licensing terms. This would give me legal leverage and as I deal with enterprise customers, it might be sufficient.