License Manager
We need a mechanism to configure which (enterprise) license a certain customer has obtained, e.g. how many named accounts.
It could work like this:
- The license manager is realized as a plugin:
dmx-license-manager
. - At deployment time in the license manager's config file (see #269) we configure the customer's license key.
- The license key is an encrypted JSON object, e.g.:
{ "customer": "Company XY", "accounts": 20, ... }
- Encryption is done through public/private key. DMX Systems needs one key pair. The public key is hardcoded in the license manager.
- At runtime the license manager decrypts the license key and:
- enforces the account limit, that is the maximum number of Username topics possible to create
- displays the license information in the Webclient's About Box (Help menu)
Notes:
- Decryption could take place at server-side by the means of Java's (built-in) crypto API.
- Due to encryption no one but DMX Systems is able to forge the license info e.g. increase number of accounts.
- When someone removes the license manager plugin or its config file from the installation it becomes a "community edition", and appears as such in the Help menu.