If you're in the market for a licensing system for .net, here are some of the components you should consider as you evaluate the different products out there in the market.
This is the core part every product should have. It actually generates the licenses using a predefined algorithm to help protect the actual software program. The most popular and secure one is using digital certificates, essentially, private/public key system. With this, a private key is used to sign a document that contains information about the license. Then the public key is used by the software being protected to validate that the document hasn’t been altered and that is valid.
The licensing system should provide you with a way to keep track of these keys and save them somewhere safe. An online licensing system can do this by default by saving the key pairs on the online database where it can’t reached by malicious users.
This feature will allow you to manage the license files and generated serial numbers. For customer support reasons, you’ll need to go back to these licenses and verify the information in it. For example, you might save what version of a product your customer is using (Lite, Professional or Enterprise). This information is saved in the license.
Also you might need to modify the information for example when a customer upgrades or you want to give them a special license. You need a way to quickly find these licenses.
Similar to license management, customer management will allow you to find customers by their name or email, get their information and check what licenses they currently have of your product.
Again, for support reasons, this is the fastest way to find license information for a customer. This feature will also serve as the actual customer database for your products so you can also tap on it for resources and future notifications you want to send to your clients.
The notification system will automatically deliver licenses to your end users after they buy or activate the license. This way, you don’t need to code this on your side of things.
The notification system will also make sure emails are delivered. At the same time, the licensing system should provide you with the tools to change the email templates so you can include your own wording.
If you’re licensing a software product it’s because your intention is to sell it to other people. Providing integration with major payment providers will allow you to automatically create the license or serial number on the fly when the customer pays. Then using the notification system, the license is also delivered to the customer instantly.
The integration with the payment provider should be done with the minimal amount of code or maybe none. For example, in LicenseSpot, you can configure payment providers with just a few clicks and using minimal information. This allows licenses to be created online.
The templating system serves as way to automatically create licenses based on predefined templates. These templates contain information about the license.
For example, you can have a template for trials and a template for production licenses. The trial specifies how much time the license is valid. A template specifies the limits the application has. Furthermore, the production template can be divided into one for the lite version and one for the professional version. Then by just selecting the right template, the license is automatically created based on these values.
When you’re doing online activations, also consider the hosting the license provider has. You don’t want to host this kind of systems by yourself as you can easily loose customers when they’re unable to activate because your server is unavailable. Ask for how many servers and what’s the SLA they provide on the service.
In LicenseSpot, this something we take really serious as we host the product on a server farm on Windows Azure providing high availability.
In conclusion, keep an eye on all these items when you’re looking to buy a licensing system for .net (either for C# or VB.NET) so you can get the best bang for your money.