How activation keys work

Summary

Activation keys are mini-contracts that are signed by Neo4j, granting access to a “feature”. Typically, features are entire applications like “Neo4j Desktop” or “Neo4j Bloom” but they may be also be used to toggle features within an application, like the experimental “application drawer” in Neo4j Desktop.

The content of an activation-key is signed with a private cryptographic key. Applications like Neo4j Desktop contain the paired cryptographic public key, allowing them to validate that the activation-key has not been altered. Neo4j Desktop itself has been code-signed for distribution on Windows and MacOS, forming a chain of trust which allows us to make use of the activation-key.

To be buzzword-friendly, you could say that an activation key is a single-link block chain. 🙂

Keys in Neo4j Desktop

Neo4j Desktop supports using activation keys for a few features:

  • registering Neo4j Desktop itself, as a manual alaternative to the Social Sign-in registration
  • activating Graph-Apps: Neo4j Bloom, Neo4j ETL
  • activatinng some experimental features

Business rules for keys in Neo4j Desktop:

  • activating a Graph-App installs that app. Once installed, the app can be used forever.
  • an expired Graph-App key can not be used for installation.
  • an expired Graph-App key will be prevent updates from being installed, but will not disable the Graph-App
Installing Activation Keys
  1. Start Neo4j Desktop
  2. Open the “User” drawer
  3. Click on “+ Add Activation Key”
  4. Paste in the entire contents of the activation key

Problem solving:

  • often, users will copy&paste just the “signature” field from the key. It is necessary to paste in the entire key
  • sometimes, keys will get altered in transit by an email server or client, or a virus-protection software. Take a look at the key to see if any fields look funny

Keys for Neo4j Bloom

How to install activation keys

Formats
Version 1 — YAML
########################################
# NEO4J SOFTWARE FEATURE ACTIVATION CODE
activationVersion: 1.0.0
featureName: neo4j-bloom
featureVersion: <2.0
registrant: Neo4j Employee
organization: 'Neo4j, Inc.'
email: andreas@neo4j.com
publisher: neo4j.com
expirationDate: '2019-07-02'
signature: >-
  3a0304b4658bdeb1469aaab512bf13b86f41a0ad4fcb60a5f00e97198bde361830ed00291b82c0bc5d5a24d6b727ea50ce46e2a40c0489d95303881348bb4627a510623e98a1738d32b97064d868597f39abaa52a249fa7df545c374f901a5cb6fdf40ec90c0076d42186152abeaf477095f3b6eb00738c801642028454da93e5211b460cf96216c659225cd64328d6c3513c08dce3f2d7ef6d8a1681f514d650314626003bf9ee863aacab9944de79b3761589dc7b5653bd9d8d36a311de75bdb06390bd0f70b039c5151165c570be252b8760ec5442ae8e3b0402588f9f27515d2dcadc270f6fa4eda89f4cae6fd9d4002e0d8f5035ad7c2d6fe0d6da0529d

Fields:

  • activationVersion: version of the license format (semver)
  • featureName: (kebab-case org-featureName, where featureName may be further segmented using camelCase)
  • featureVersion: valid version range (semver range)
  • registrant: full name of contact person (Title Case)
  • organization: official name of registrant’s organization (string)
  • email: contact address for registrant (email)
  • publisher: domain name of feature publisher (FQDN)
  • expirationDate: year-month-day of expiration (string)
  • signature: cryptographic signature of fields (hex)
Version 2 — JWT

  • Last Modified: 2020-09-15 13:07:09 UTC by Andreas Kollegger.
  • Relevant for Neo4j Versions: 3.4.
  • Relevant keywords desktop.