Лицензии
Лицензии — это ядро 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 и настраивайте оповещения
- Используйте массовые операции для управления несколькими лицензиями.
Пользовательский опыт
- Предоставляйте четкие сообщения об ошибках для недействительных лицензий.
- Внедрение постепенного снижения производительности при проблемах с сетью.
- Показывать предупреждения об истечении срока действия лицензии до истечения срока их действия
- Обеспечьте простое продление лицензий и возможности обновления.
- Поддержка нескольких типов лицензий для разных случаев использования.