Перейти к основному содержимому

Быстрый старт для разработчика

Подключите лицензируемый клиент к MyHoreca Licensing примерно за час.

1. Продукт и ключ (Console)

  1. Откройте Vendor ConsoleProducts → создайте продукт.
  2. Откройте продукт → вкладка Keys → создайте лицензию и выпустите ключ (полный текст показывается один раз).
  3. По желанию: Product → Policy (матрица FeatureLimits); карточка лицензии — слоты custom data.
  4. Зафиксируйте Management base URL и tenant из вашего деплоя.

2. Выберите SDK

См. матрицу SDK и справочник SDK.

Типичный поток:

  1. Соберите идентичность устройства: новый installation key при первом запуске каждой машины — никогда не запекайте private key в golden image (Device Identity).
  2. Вызовите activate / validate с ключом лицензии (или токеном активации).
  3. Кэшируйте signed lease; обновляйте по heartbeat / сроку.
  4. Локально проверьте lease через JWKS (следующий раздел) — ES256, не RSA в бинарнике.
  5. Применяйте entitlements (и опциональные custom data claims) из проверенного payload — см. Entitlements.

3. Локальная проверка (JWKS)

Не встраивайте RSA public key «как у Cryptolens» как модель доверия. Скачайте / кэшируйте Runtime JWKS, проверьте Compact JWS (MH-LEASE-V1), затем применяйте claims. Полный narrative: Проверка доверия (JWKS).

ШагДействие
1Activate / refresh → получите leaseToken (Compact JWS)
2SDK загружает JWKS с Runtime (кэш TTL; одно обновление при неизвестном kid; затем fail-closed)
3Вызовите helper проверки SDK (VerifyLeaseAsync / verifyLease / …) с expected audience
4Только после isAccepted — читайте entitlements / опциональные custom data

Минимум .NET:

var verified = await client.VerifyLeaseAsync(
leaseToken,
new LeaseVerificationOptions { ExpectedAudience = "myhoreca.runtime" });
if (!verified.IsAccepted) { /* deny features */ }

Минимум TypeScript:

const verified = await client.verifyLease(leaseToken, {
expectedAudience: "myhoreca.runtime",
});
if (!verified.isAccepted) {
/* deny features */
}

Runnable samples уже заканчиваются на verify: матрица SDK → Примеры.

4. Offline и floating (по необходимости)

5. Дальше