Skip to content

Auto-hébergement

Connecter votre produit à votre instance

Rendez l'auto-hébergement concret : faites pointer les applications de vos clients vers votre propre instance Keyright. Créez un produit, générez sa clé de signature, embarquez la clé publique et votre URL de base dans le SDK, émettez une licence et activez — les mêmes SDK que Keyright hébergé, simplement avec votre clé de produit et votre URL.

C’est l’étape qui rend l’auto-hébergement concret : les applications de vos clients doivent être licenciées auprès de votre instance Keyright, pas de la nôtre. Les SDK (NuGet, npm, PyPI, Maven) sont les mêmes que ceux décrits dans les guides d’intégration pour Keyright hébergé — rien n’est codé en dur vers un endpoint Delta1. Tout le parcours s’exécute contre votre instance ; ci-dessous, $BASE est votre URL de base (issue de Déploiement → Vérifier) et $TOKEN est votre KEYRIGHT_ADMIN_TOKEN.

Étape 1 — Créer le produit

Les produits n’existent pas tant que vous ne les créez pas (sinon, l’appel de clé de signature de l’étape 2 renverra 404). Depuis le tableau de bord (Products → Add product) ou via l’API :

curl -X POST -H "X-Admin-Token: $TOKEN" -H "content-type: application/json" \
     $BASE/admin/products -d '{"name":"Acme App","slug":"acme-app"}'

Étape 2 — Générer la clé de signature du produit

C’est la clé qui signe les licences d’acme-app ; embarquez sa moitié publique dans votre application.

curl -X POST -H "X-Admin-Token: $TOKEN" $BASE/admin/products/acme-app/signing-key
# -> { "signingPublicKey": "MIIBIjANBgkq...", "rotated": false, ... }

La clé privée est générée et stockée dans votre base de données, chiffrée sous la KEK — elle ne quitte jamais votre instance. Copiez la clé publique renvoyée. (Alternativement, utilisez une clé à l’échelle du tenant via KEYRIGHT_SIGNING_KEY et embarquez le résultat de GET $BASE/admin/public-key — mais une clé par produit est le choix le plus simple et sans ambiguïté.)

Étape 3 — Embarquer cette clé publique dans votre application

Via le SDK — ceci vérifie les licences hors ligne, sans aucun appel à votre serveur :

RuntimeOptionValeur
.NET (Keyright.NET)PublicKeyBase64la clé publique de votre produit (étape 2)
Node (keyright)publicKeyBase64la clé publique de votre produit
Python (keyright)public_key_base64la clé publique de votre produit
Java (com.delta1labs:keyright)publicKeyBase64la clé publique de votre produit

Étape 4 — Faire pointer le SDK vers votre instance

Pour l’activation/la validation/la mesure d’usage en ligne — définissez l’URL du service sur l’URL de base de votre instance ($BASE) :

RuntimeOptionValeur
.NETServiceUrlhttps://licensing.acme.example
NodeserviceUrlhttps://licensing.acme.example
Pythonservice_urlhttps://licensing.acme.example
JavaserviceUrlhttps://licensing.acme.example

Exemple en .NET (Node, Python et Java sont identiques au nommage près — voir leurs guides d’intégration ; pour une clé d’essai en libre-service, votre application appelle directement POST <base>/v1/trial, qui envoie la clé par e-mail au client — celui-ci la saisit ensuite et votre application l’active comme n’importe quelle clé payante) :

using Keyright.Client;

static readonly KeyrightClient License = KeyrightClient.Initialize(new KeyrightOptions
{
    Product         = "acme-app",                        // le slug de votre produit sur votre instance
    PublicKeyBase64 = "MIIBIjANBgkq...",                 // la clé publique de votre produit (étape 2)
    ServiceUrl      = "https://licensing.acme.example",  // l'URL de base de votre instance (étape 4) ; omettez-la en hors ligne uniquement
});

Étape 5 — Émettre une licence à un client

Définissez éventuellement un niveau (un nombre de sièges + un modèle de droits), puis émettez une clé :

# facultatif : un niveau réutilisable
curl -X POST -H "X-Admin-Token: $TOKEN" -H "content-type: application/json" \
     $BASE/admin/products/acme-app/tiers -d '{"name":"pro","seats":3,"entitlements":{"export":"true"}}'

# émettre une licence (omettez "id" pour générer automatiquement la clé)
curl -X POST -H "X-Admin-Token: $TOKEN" -H "content-type: application/json" \
     $BASE/admin/licenses -d '{"licensee":"Acme Inc.","product":"acme-app","tier":"pro","seats":3,"email":"owner@acme.com"}'
# -> HTTP 201 { "id":"LIC-XXXX...", "product":"acme-app", "tier":"pro", "seats":3, "used":0, ... }

L’id (LIC-…) est la clé que vous remettez au client. seats sur la licence prime sur la valeur par défaut du niveau.

Étape 6 — L’application du client s’active

L’appel d’activation du SDK (ou un POST $BASE/v1/activate brut avec le corps { "key", "machineId", "product" }, sans authentification) lie la machine, consomme un siège et renvoie une lease signée que votre application met en cache et revérifie hors ligne :

LicenseInfo info = await License.ActivateAsync(customerKey);   // en ligne : lie cette machine
if (info.IsPaid && License.IsEnabled("export")) { /* débloquer */ }

C’est toute la différence avec Keyright hébergé : votre clé de produit et votre URL. Les endpoints /v1/*, les formats de licence/lease et chaque appel du SDK sont identiques. Parcours complets par langage : .NET, Node.js, Python, Java, ou l’API HTTP brute (qui documente les corps de requête exacts de /v1/*).