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

Сервис лицензирования платформы Multi-D

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

Артефакты сервиса

Наименование артефактаОписание артефакта
postgres:13образ Docker СУБД PostgreSQL версии 13.4
bellsoft/liberica-openjdk-debian:17.0.2-9образ Docker ОС Debian с установленным пакетом Liberica JDK версии 17.0.2
platformmd/licenses-module/licenses-module:[version.build-number]образ Docker ОС Debian с установленным пакетом Liberica JDK версии 17.0.2 и развёрнутым сервисом лицензирования

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

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

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

НаименованиеЗначение
по умолчанию
Переменная
окружения
Параметр
конфигурации
Примечания
discovery.
heartbeat.
period
10000DISCOVERY_
HEARTBEAT_
PERIOD
discovery.
heartbeat.
period
discovery.
nginx.
base.url
https://proxy.
pmd.local
NGINX_
BASE_URL
licenses.
module.
name
licenses_
module
licenses.
module.
skills
[ "licenses
processing" ]
Значение параметра
представляет собой
массив строк
identity.
issuer.
location
https:
//proxy.pmd.
local/identity
IDENTITY_
ISSUER_
LOCATION
identity.
client.
id
licenses-
module-
client
identity.
client.
secret
secretIDENTITY_
CLIENT_
SECRET
identity.
swagger.
client.id
licenses-module
-swagger
identity.
swagger.
client.
secret
secretIDENTITY_
SWAGGER
CLIENT
SECRET
identity.
discovery.
client.id
reporting-module
-for-discovery
-client
identity.
discovery.
client.secret
secretIDENTITY_
DISCOVERY
CLIENT
SECRET
identity.
security.
access.
client.id
reporting-module
-for-security
-access-client
identity.
security.
access.client.
secret
secretIDENTITY_
SECURITY_
ACCESS
CLIENT
SECRET
identity.
configuration.
client.id
for-configuration-
service-client
identity.
configuration.
client.secret
secretIDENTITY_
CONFIGURATION
CLIENT
SECRET
common.
identity.
relative.
authorization.
url
/connect/authorize?
acr_values=idp:
tflexprovider
tenant:
IDENTITY_
RELATIVE_
AUTH_URL
identity.
relative.
authorization.
url
Параметр авторизации по протоколу OAuth 2.0/OpenID при взаимодействии с сервисом посредством интерфейса Swagger
common.
identity.
relative.
token.url
/connect/token?acr_values=idp:
tflexprovider
tenant:
IDENTITY_
RELATIVE_
TOKEN_URL
identity.
relative.
token.url
Параметр получения токена JWT по протоколу OAuth 2.0/OpenID при взаимодействии с сервисом посредством интерфейса Swagger
common.
licenses.
module.port
443LICENSES_
MODULE_
PORT
licenses.
module.port
spring:
datasource:
driver:
class:name
org.
postgresql.
Driver
SPRING_
DATASOURCE_
DRIVER
CLASSNAME
spring.
datasource.
driver-class
-name
spring:
datasource:
url
jdbc:
postgresql:
//localhost:
5434/
multi-d-reports
SPRING_
DATASOURCE_
URL
spring.
datasource
.url
spring:
datasource:
username
reports-masterSPRING_
DATASOURCE_
USERNAME
spring.
datasource
.username
spring:
datasource:
password
reports-masterSPRING
_DATASOURCE
_PASSWORD
spring.
datasource.
password
root:
logger:
level
ERRORROOT_
LOGGER_
LEVEL
java.root.
logger.level
Уровень
журналирования
корневого
журнала
сервиса
otel.traces.
exporter
OTEL_
TRACES_
EXPORTER
Значение по умолчанию
не задано. Подлежит
обязательной настройке.
otel.
exporter.
zipkin.
endpoint
OTEL_
EXPORTER
ZIPKIN
ENDPOINT
Значение по умолчанию
не задано. Подлежит
обязательной настройке.

Авторизация доступа

В процессе инициализации сервис лицензирования осуществляет формирование пространства licenses-service сервиса авторизации Платформы Multi-D при помощи метода /api/external/namespace/merge. Gрава доступа на осуществление операций с заданным объектом права для соответствующего субъекта/группы субъектов права назначаются при помощи интерфейса консоли администрирования Платформы Multi-D.

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

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

Наименование поляТип поляОписание поля
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)идентификатор продукта

Формирование лицензии и ключа проверки лицензии

Формирование лицензии и ключа проверки лицензии осуществляется сторонними, по отношению к сервису лицензирования, средствами.

Формирование лицензии и ключа проверки лицензии

Механизм формирования файла лицензии в формате JWS и порядок формирования ключа шифрования для него; Инструкция по ручному формированию лицензии в формате JWS посредством консольной утилиты openssl и других вспомогательных инструментов.

В сервисе лицензирования поддерживаются алгоритмы формирования цифровой подписи.

Алгоритмы формирования цифровой подписи

RSA (RSASSA-PKCS-v1_5 или RSASSA-PSS) на основе алгоритма хеширования SHA-2:
1.1. RS256;
1.2. RS384;
1.3. RS512;
1.4. PS256;
1.5. PS384;
1.6. PS512;
Elliptic Curve (ECDSA):
2.1. ES256;
2.2. ES256K;
2.3. ES384;
2.4. ES512.

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

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

Пример файла лицензии
Пример файла лицензии
{
"ProductInfo": {
"Id": "CA9419A4-8A7B-410B-9FAE-84A85E953630",
"Name": "Продукт v2.0"
},
"LicenseInfo": {
"Issuer": {
"Id": "4EDE00AA-C7BF-4724-8AE7-50AD49778677",
"Name": "Платформа Multi-D"
},
"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
},

...

]
}