Лицензии

Лицензии — это ядро ​​LicenseChain. Каждая лицензия представляет собой действительное разрешение пользователю на использование вашего программного обеспечения.

Что такое лицензии?

A Лицензия в LicenseChain — это цифровое разрешение, которое дает пользователю право использовать ваше программное обеспечение. Каждая лицензия содержит информацию о пользователе, имеющемся у него плане, сроке его действия и к каким функциям они могут получить доступ.

Лицензии криптографически защищены и могут быть проверены в режиме реального времени через наш API. Они поддерживают различные типы лицензий, включая бессрочные, на основе подписки и пробные лицензии.

Структура лицензии

Основные свойства

  • Лицензионный ключ - Уникальный идентификатор
  • План - Уровень лицензии (FREE, PRO, BUSINESS, ENTERPRISE)
  • Тип проверки - Уровень проверки (базовый, расширенный, корпоративный)
  • Статус - Текущее состояние (АКТИВНО, ИСТЕЧЕНО, ПРИОСТАНОВЛЕНО)
  • Срок действия - По истечении срока действия лицензии

Информация о пользователе

  • Выдано кому - Имя клиента или компания
  • Электронная почта - Адрес электронной почты клиента
  • Функции - Доступные функции и возможности
  • Метаданные - Пользовательские данные и теги

Типы лицензий

Бессрочные лицензии

Лицензии на одноразовую покупку, срок действия которых не истекает. Идеально подходит для настольных приложений.

  • Нет срока годности
  • Единовременный платеж
  • Пожизненный доступ
  • Идеально подходит для настольных приложений

Лицензии на подписку

Повторяющиеся лицензии, требующие периодического продления. Идеально подходит для приложений SaaS.

  • Ежемесячное/ежегодное продление
  • Автоматическое истечение срока действия
  • Регулярное выставление счетов
  • Идеально подходит для приложений SaaS

Пробные лицензии

Ограниченные по времени лицензии для ознакомительных целей. Отлично подходит для того, чтобы попробовать перед покупкой.

  • Ограниченная продолжительность (7-30 дней)
  • Полный доступ к функциям
  • Автоматическое преобразование
  • Идеально подходит для демонстраций

Проверка лицензии

Проверка в реальном времени

Проверяйте лицензии в режиме реального времени с временем отклика менее 100 мс. Использовать POST /v1/licenses/verify с телом { "key": "LICENSE-KEY" }. Необязательный hwuid (или hardwareId) включает аппаратную привязку: если лицензия привязана к устройствам, предоставленный HWUID должен совпадать, иначе ответ будет valid: false с reason: "hardware_id_mismatch".

// License verification example
// Verify license key with client
// Check if license is valid and handle accordingly

Аппаратная привязка (HWUID)

Дополнительная привязка оборудования/устройства (HWUID) ограничивает лицензию конкретными устройствами. Отправлять hwuid в POST /v1/licenses/verify (например, из вашего SDK getHardwareId()). Если лицензия еще не имеет привязанного устройства, при первой успешной проверке с помощью hwuid выполняется привязка при первом использовании. Использовать POST /v1/licenses/bind-hardware (аутентифицированный) для явной привязки и POST /v1/licenses/validate-hardware для проверки ключа + идентификатора оборудования. Все официальные SDK поддерживают опциональную hwuid при проверке и использовании HMAC-SHA256 со сравнением в постоянное время для проверки подписи веб-перехватчика.

Токен подтверждения лицензии (офлайн-проверка)

После онлайн POST /v1/licenses/verify, Core API может вернуть license_token (RS256 JWT), license_token_expires_at, и license_jwks_uri при подписании ключи настраиваются в API. Надежно храните токен, проверяйте его подпись с помощью GET /v1/licenses/jwks, требовать token_use === "licensechain_license_v1", подтвердить exp и (когда вы выдаете лицензии на каждое приложение) что aud соответствует идентификатору вашего приложения. Обновите, вызвав проверку еще раз до истечения срока действия; уровень влияет на TTL (lc_vt: базовый/расширенный/пользовательский). См. Руководство по безопасности для асимметричной проверки и кэширования JWKS.

Лучшие практики

Безопасность

  • Всегда проверяйте лицензии на своем сервере, а не только на клиенте.
  • Используйте HTTPS для всех коммуникаций API.
  • Внедрите правильное ограничение скорости, чтобы предотвратить злоупотребления.
  • Регистрируйте все попытки проверки лицензии для аудита.
  • Используйте снятие отпечатков пальцев устройства, чтобы предотвратить совместное использование лицензий

Производительность

  • Кэшируйте результаты проверки лицензии, когда это необходимо.
  • Используйте офлайн-проверку для лучшего взаимодействия с пользователем
  • Внедрить правильную обработку ошибок и логику повторных попыток.
  • Отслеживайте использование API и настраивайте оповещения
  • Используйте массовые операции для управления несколькими лицензиями.

Пользовательский опыт

  • Предоставляйте четкие сообщения об ошибках для недействительных лицензий.
  • Внедрение постепенного снижения производительности при проблемах с сетью.
  • Показывать предупреждения об истечении срока действия лицензии до истечения срока их действия
  • Обеспечьте простое продление лицензий и возможности обновления.
  • Поддержка нескольких типов лицензий для разных случаев использования.