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

Сервис лицензирования Атомкод

Сервис лицензирования предназначен для хранения, обработки и выдачи информации о лицензиях Атомкод.

Сервис реализован на языке Java (Liberica JDK версия 17.0.9-11 ) и представляет собой контейнер Docker (версия не ниже 19.03.8), запуск которого осуществляется в соответствии с инструкцией по развертыванию Атомкод. В случае успешного запуска, сервис будет доступен по адресу: https://<hostname>/services/licenses_module.

Порядок настройки

Настройка сервиса лицензирования Атомкод включает в том числе и настройку данных о продукте.

Параметры настройки

Параметры настройки сервиса лицензирования задаются следующими способами:

  1. Файл licenses-settings.json.
  2. Переменная окружения.
  3. Глобальная конфигурация nginx Атомкод.
  4. Конфигурация сервиса Атомкод.

Наименование параметра настройки не зависит от способа задания.

Результирующий параметр настройки сервиса, который будет использоваться во время работы, вычисляется по следующему алгоритму:

  1. Параметру присваивается значение из файла licenses-settings.json.
  2. Параметру присваивается значение из переменной окружения.
  3. Параметру присваивается значение из Global Parameters nginx. Посмотреть значения можно в Консоли администрирования Атомкод в разделе Configuration, нажав на кнопку Global Parameters.
  4. Параметру присваивается значение из конфигурации сервиса Атомкод.
  5. Параметру присваивается значение из переменной окружения.

Например, если параметр задан в файле settings.json, в переменной окружения и в глобальной конфигурации nginx, результирующему параметру конфигурации будет присвоено значение из окружения.

Основные параметры конфигурации сервиса, соответствующие им переменные окружения, задаваемые при запуске контейнера Docker-сервиса, и параметры конфигурации сервиса конфигурации Атомкод приведены в таблице ниже.

НаименованиеЗначение по умолчаниюПримечания
RABBITMQ_URIamqp://admin:admin@rabbitmq:5672Параметр осуществления аудита операций сервиса.
discovery:heartbeat.period10000Интервал между проверками работоспособности Discovery-сервиса. Значение параметра указывается в миллисекундах.
licenses.module:namelicenses_moduleНаименование сервиса.
licenses.module:skills[ "licenses processing", "Product" ]Значение параметра представляет собой массив строк.
ConfigServer{ConfigServer}Базовый url Атомкод. (В случае, если Атомкод развёрнута без дополнительных настроек, это путь до nginx)
identityConfiguration__identityServiceUrl{ConfigServer}/identityUrl функционала identity
spring.datasource.driver-class-name{Не задано}Настройки для подключения к базе данных
SPRING_DATASOURCE_URL{Не задано}Настройки для подключения к базе данных
SPRING_DATASOURCE_USERNAME{Не задано}Настройки для подключения к базе данных
SPRING_DATASOURCE_PASSWORD{Не задано}Настройки для подключения к базе данных
http:request:timeout10Величина интервала ожидания отклика по протоколу HTTP(S), выраженная в секундах.
logging:LogLevel:DefaultdebugУровень логирования корневого журнала сервиса.
ApiConfiguration__ClientSecrets__0__ClientId{Не задано}Логин клиента identity.
ApiConfiguration__ClientSecrets__0__Secret{Не задано}Пароль клиента identity.
ApiConfiguration__ClientSecrets__1__ClientId{Не задано}Логин клиента identity.
ApiConfiguration__ClientSecrets__1__Secret{Не задано}Пароль клиента identity.
ApiConfiguration__ClientSecrets__2__ClientId{Не задано}Логин клиента identity.
ApiConfiguration__ClientSecrets__2__Secret{Не задано}Пароль клиента identity.
ApiConfiguration__ClientSecrets__3__ClientId{Не задано}Логин клиента identity.
ApiConfiguration__ClientSecrets__3__Secret{Не задано}Пароль клиента identity.
ApiConfiguration__ClientSecrets__4__ClientId{Не задано}Логин клиента identity.
ApiConfiguration__ClientSecrets__4__Secret{Не задано}Пароль клиента identity.
ApiConfiguration__ClientSecrets__5__ClientId{Не задано}Логин клиента identity.
ApiConfiguration__ClientSecrets__5__Secret{Не задано}Пароль клиента identity.
ProductName{Не задано}Наименование продукта
ProductVersion{Не задано}Версия продукта
PlatformVersion{Не задано}Версия Атомкод
DiscoveryNodeFileLocation/usr/src/nodeId.txtМестоположение файла с сохранённым nodeId Discovery-сервиса
StandNameLocalStandНазвание стенда, на котором развёрнут сервис
Kafka__AuditProducerTopic{stand}-AuditТопик Kafka для отправления сообщений аудита
audit.kafka.repeatslocalhost:9094Сервер Kafka
TracesEnabledfalseФлаг, определяющий нужно ли отправлять трейсы
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT-Endpoint для отправки трейсов

Модели данных

Модели данных сервиса лицензирования Атомкод.

Параметры выборки поля данных лицензии

Наименование поляТип поляОписание поля
productIDstring($uuid)идентификатор продукта
keystringключ поля данных лицензии

Данные о лицензии

Наименование поляТип поляОписание поля
licensorIDstring($uuid)идентификатор лицензиара
licensorNamestringнаименование лицензиара
licenseeIDstring($uuid)идентификатор лицензиата
licenseeNamestringнаименование лицензиата
licenseIDstring($uuid)идентификатор лицензии
licenseDatestring($date-time)дата выдачи лицензии

Параметры поля данных лицензии

Наименование поляТип поляОписание поля
keystringключ поля данных лицензии
valuestringзначение поля данных лицензии
typestringтип значения поля данных лицензии (допустимые значения ARRAY, BINARY, BOOLEAN, NULL, NUMBER, OBJECT, STRING)

Параметры добавления лицензии

Наименование поляТип поляОписание поля
jwsstringлицензия
keystringключ проверки лицензии

Данные о продукте

Наименование поляТип поляОписание поля
productIDstring($uuid)идентификатор продукта
namestringнаименование продукта

Идентификатор продукта

Наименование поляТип поляОписание поля
idstring($uuid)идентификатор продукта

Управление лицензиями

Управление лицензиями: добавление лицензии, выборка данных лицензии, удаление лицензии — осуществляется с помощью методов API.

Пример файла лицензии
{
"ProductInfo": {
"Id": "CA9419A4-8A7B-410B-9FAE-84A85E953630",
"Name": "Продукт v2.0"
},
"LicenseInfo": {
"Issuer": {
"Id": "4EDE00AA-C7BF-4724-8AE7-50AD49778677",
"Name": "Атомкод"
},
"Customer": {
"Id": "7A14B3A3-2F1A-454B-B45C-D7D93DA67A64",
"Name": "ООО \"Разработка ПО\""
},
"License": {
"IssueDate": "2021-01-11T18:25:43+03:00",
"Id": "1EE7A378-56B3-4773-B470-5F379C17FDA3"
}
},
"LicenseData": [
{
"Key": "Value1",
"Value": 115
},

...

]
}