title: Authenticating & Licensing my Add-in program
body: <p>I have created an Addin for a business program that I want to sell to customers based on a per year subscription. I have been thinking hard, to no avail, on what is the best way to authenticate my addin in a safe &amp; convenient way.</p>
  
  <p><strong>Requirements</strong></p>
  
  <ul>
  <li>Easy to set a new license for a client, no code changing</li>
  <li>Remote updating of the license</li>
  <li>Customers are not hackers, but is should not be easy to crack</li>
  </ul>
  
  <p><strong>Environment</strong></p>
  
  <ul>
  <li>The Business Program runs on a server, all users have a click once c# client. The addin sits in the client. </li>
  <li>I can read global variables from the client like site name, which is unique for each instance and not editable by customers and also the date (so no worrying customers will change their date settings)</li>
  <li>I can communicate with my own server, where I could store License end dates</li>
  </ul>
  
  <p><strong>Concerns</strong></p>
  
  <ul>
  <li>If I use my server to daily authenticate and it is not reachable, or they block the IP...</li>
  <li>When I do a request from the client to my server for the enddate, this could be altered with, but how to encrypt it effectively between the two systems, without a whole private / public key setup?</li>
  </ul>
  
  <p>I know this is a broad question, but I also need broad answers on the different aspects involved in this. Can someone please guide me on what would be a good setup, or direct me to a site describing this? One would expect this to be quite typical.. I cannot find anything.</p>