Just to be clear, by authentication I don't mean user-authentication, but I want to make sure that my app is running on the customer's server and in a defined time-span.

Some of our customers use our web apps in their Intranet and on their own servers, on the other hand some of them use Hosting services and they don't own any server machine.

With that said, I'm looking for ways to make sure about customer's Identity. I don't want them to be able to xcopy the app, also I'd like to have some kind of time-expiration limit.

In traditional desktop apps we could use USB security tokens, but their not usable with hosting providers.

It seems that we have to make a central authentication server. I'm a little confused about possible options, so any suggestion about where to start is welcome.

  • 1
    Have you read about "software license servers" or so called "key servers". Sounds you want to provide a key server solution. – thepacker Oct 18 '15 at 9:34

This is a very complex thing. What you need is a licensing mechanism where you create for example a key based on unique system information like servername, mac address, company name, cpu id, etc. You can also have a compbination of those information. After that you need to create a "key generator" and in your software read this information, verify on each startup if they are identical and run the software. Additionally you can add a time information for the expiration date, or days which the user can use your app.

But (and this is my personal opinion) you dont need to develop a super complex licensing mechanism. Nearly everthing is breakable. The question is: is your software worth to put so much effort in cracking your licensing mechanism? Is you app designed for small, mid size or large companies? How expensive is your app?

Here is an SO article on that. Search for 'licensing', 'software licensing [development language]' , 'key generator' ...

| improve this answer | |

After much research, I opt to use Portable Licensing. It's very easy to use, and yet provides the basic and secure infrastructure you need to build your licensing system.

With Portable Licensing you need to:

  1. Create a key pair based on a passphrase.
  2. Generate licenses with your private key and store necessary information into it.
  3. Distribute public key and license key to the customer.

You app will verify license's signature with the public key and then you can be sure that licensing information are intact and valid.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.