Перейти в хранилище документации
Обратиться в техническую поддержку![]()
В статье приводится способ авторизации в gRPC-канале с примерами кода на языке Python.
gRPC-запросы формируются на основе proto-файлов.
Внимание!
Описанный способ выполнения прямых gRPC-запросов применим только для стандартного типа установки ПК Интеллект Х Сервер и клиент. В отказоустойчивом режиме сертификаты хранятся в Consul, поэтому прямое подключение к gRPC-сервису на порту 20109 без дополнительной настройки не поддерживается.
Перед началом работы необходимо:
Через pip установить зависимости:
pip>=21.1.2 grpcio-tools>=1.38.0 googleapis-common-protos pyOpenSSL==19.1.0
Для создания proto-классов необходимо:
Сохранить скрипт в виде py-файла: script.py.
В результате в папке со скриптом появится папка ITV с proto-классами, которые будут использоваться для работы через gRPC-канал.
Для отправки запросов через gRPC-канал необходима авторизация. Для этого необходимо использовать сертификат Сервера из папки C:\ProgramData\ITV\IntellectX\Tickets.
Авторизация возможна только к серверу из сертификата.
Ниже приводится пример авторизации и пример запроса ConfigurationService.ListUnits для получения корневого юнита.
Функция get_authorized_channel в качестве параметров принимает:
Примечание
Импортируемые proto-классы из папки ITV были созданы на предыдущем шаге.
Стандартные gRPC-запросы (gRPC API) выполняются через web-сервер (порт 80). Также поддерживается отправка прямых gRPC-запросов на порт 20109 с использованием ПО Postman.
Для выполнения прямых gRPC-запросов с помощью ПО Postman требуется:
запрос AuthenticationService / Authenticate — для получения токена аутентификации (время жизни токена – 5 минут);
целевой gRPC-запрос — использует полученный токен.
В ПО Postman нужно нажать на кнопку New → gRPC.
На вкладке Service definition:
импортировать требуемый .proto-файл;
указать путь ко всем gRPC proto-файлам.
Нажать на кнопку Next.
В поле Enter URL указать адрес сервера с портом 20109. Например, 127.0.0.1:20109.
В поле Select a method выбрать требуемый метод из списка доступных.
Примечание
Пример для метода ListUnitsStream:
{
"unit_uids": [
"hosts/SERVER1/MultimediaStorage.AliceBlue"
]
}
В результате в интерфейсе отобразится:
стрелка вверх — отправленный запрос;
стрелка вниз — ответ сервера.
В ПО Postman время жизни токена составляет 5 минут. Для использования токена в запросах без необходимости вводить его вручную каждый раз заново, токен можно сохранить в переменные среды. Для это нужно:
{
"password": "your_root_password",
"user_name": "root"
}
var data = pm.response.messages.idx(0).data
pm.globals.set("token_name", data.token_name);
pm.globals.set("token_value", data.token_value);
После выполнения запроса токен сохранится в глобальных переменных Postman. Токен действителен в течение 5 минут.