Indeed Key Server
Indeed Key Server (Key Server) — это сервер, необходимый для реализации аутентификации пользователей через Indeed Key Provider. С помощью Key Server отправляются push-уведомления и одноразовые пароли из мобильного приложения Indeed Key.
Core Server устанавливает связь с Key Server по URL-адресу, а Key Server — с мобильным приложением Indeed Key по протоколу HTTPS.
Для записи событий сервера необходима отдельная база данных Microsoft SQL или PostgreSQL.
В этом разделе описаны дополнительные настройки для Key Server, которые не являются обязательными для установки компонента.
Настройка событий сервера
Установка и настройка осуществляется на Log Server.
Для записи событий Key Server выберите один из вариантов:
- Используйте базу данных, созданную для записи событий Core Server — настраивается в мастере конфигурации.
- Создайте отдельную базу данных — следуйте инструкции в этом разделе.
Настроить события на отдельной базе данных
Key Server поддерживает работу с базами PostgreSQL и Microsoft SQL.
Чтобы создать отдельную базу данных и сервисную учетную запись, следуйте инструкции в разделе Хранилище данных.
После создания базы данных (после первого запроса) можно понизить привилегии для пользователя. Достаточно права db_owner для созданной базы данных.
- Microsoft SQL
- PostgreSQL
Откройте конфигурационный файл am/ls/clientApps.config и расскоментируйте строку:
<Target Id="DbTargetMssqlIndeedKey" Type="mssql" />Где
DbTargetMssqlIndeedKey— это название конфигурационного файла в папке am/ls/targets.Раскомментируйте блок
<Application Id="akc" SchemaId="akcSchema">.Пример
<Application Id="akc" SchemaId="akcSchema">
<ReadTargetId>DbTargetMssqlIndeedKey</ReadTargetId>
<WriteTargets>
<TargetId>DbTargetMssqlIndeedKey</TargetId>
</WriteTargets>
<AccessControl>
<CertificateAccessControl CertificateThumbprint="01de449b6f4b49e00d1a5b20ffb5d6605cf6cd2a" Rights="Write" />
</AccessControl>
</Application>- В тегах
ReadTargetIdуказывается идентификатор хранилища, откуда будет осуществляться чтение событий. - В блоке
WriteTargets, в тегахTargetId, указывается идентификатор хранилища, куда будет осуществляться запись событий. - Идентификаторы заданы в теге
Targets, конфигурационные файлы для каждого типа находятся в папке am/ls/targets/ с соответствующим именем. - При использовании собственного клиентского сертификата в
CertificateThumbprintуказывается отпечаток клиентского сертификата Core Server.
- В тегах
При необходимости использовать дополнительное хранилище данных, укажите его в секции
Targets:Пример
<Targets>
...
<Target Id="mssqlTargetAM" Type="mssql"/>
</Targets>Перейдите в каталог am/ls/targets и откройте конфигурационный файл DbTargetMssqlIndeedKey.config.
В строке
ConnectionStringукажите следующие данные:Data Source— DNS/IP-адрес сервера с базой данных.Initial Catalog— имя базы данных.User ID— имя пользователя, который имеет полные права для базы данных Database.Password— пароль пользователя.
Пример
<?xml version="1.0" encoding="utf-8"?>
<Settings>
<ConnectionString>Data Source=[Db host address];Initial Catalog=[AM Db];User ID=[Db service account];Password=[Db service password];TrustServerCertificate=True</ConnectionString>
</Settings>
Откройте конфигурационный файл am/ls/clientApps.config и расскоментируйте строку:
<Target Id="DbTargetSqlIndeedKey" Type="pgsql" />Где
DbTargetSqlIndeedKey— это название конфигурационного файла в папке am/ls/targets.Раскомментируйте блок
<Application Id="akc" SchemaId="akcSchema">.Пример
<Application Id="akc" SchemaId="akcSchema">
<ReadTargetId>DbTargetSqlIndeedKey</ReadTargetId>
<WriteTargets>
<TargetId>DbTargetSqlIndeedKey</TargetId>
</WriteTargets>
<AccessControl>
<CertificateAccessControl CertificateThumbprint="01de449b6f4b49e00d1a5b20ffb5d6605cf6cd2a" Rights="Write" />
</AccessControl>
</Application>- В тегах
ReadTargetIdуказывается идентификатор хранилища, откуда будет осуществляться чтение событий. - В блоке
WriteTargets, в тегахTargetId, указывается идентификатор хранилища, куда будет осуществляться запись событий. - Идентификаторы заданы в теге
Targets, конфигурационные файлы для каждого типа находятся в папке am/ls/targets/ с соответствующим именем. - При использовании собственного клиентского сертификата в
CertificateThumbprintуказывается отпечаток клиентского сертификата Core Server.
- В тегах
При необходимости использовать дополнительное хранилище данных, укажите его в секции
Targets:Пример
<Targets>
...
<Target Id="sqlTargetAM" Type="pgsql"/>
</Targets>Перейдите в каталог am/ls/targets и откройте конфигурационный файл DbTargetSqlIndeedKey.config.
В строке
ConnectionStringукажите следующие данные:Server— DNS/IP-адрес сервера с базой данных.Database— имя базы данных.Port— порт подключения.User ID— имя пользователя, который имеет полные права для базы данных Database.Password— пароль пользователя.
Пример
<?xml version="1.0" encoding="utf-8"?>
<Settings>
<ConnectionString>server=[database host address];port=5432;user id=[database service account];password=[database service password];database=[log server]</ConnectionString>
</Settings>
Просмотр событий Key Server
- При хранении событий в базе данных используйте сторонние средства мониторинга или SQL-запросы.
- Для хранилища Syslog используйте сторонние средства мониторинга с поддержкой Syslog.
- В Management Console — во вкладке События отображаются события, записанные в базу данных для Log Server.
В качестве хранилища можно использовать все способы хранения, которые поддерживает Log Server.
Сервис очистки старых данных
В файле am/indeed-key/app-settings.json можно задать параметры сервиса очистки старых данных.
Пример
"CleanAkData": {
"Enabled": true,
"FirstRunTime": "00:00",
"Interval": "1.00:00:00",
"AkDataLifeTime": "1.00:00:00",
"BatchDeleteLimitRows": 1000,
"BatchDeleteDelayMsec": 1000
}
Описание атрибутов примера
| Имя атрибута | Описание | Значение | Значение по умолчанию | Минимально допустимое значение |
|---|---|---|---|---|
Enabled | Флаг включения сервиса | true, false | true | Отсутствует |
FirstRunTime | Время первого запуска сервиса | Строка в формате времени hh:mm (ЧЧ:ММ) | 00:00 (полночь) | Отсутствует |
Interval | Интервал запуска сервиса | Временной интервал | 1.00:00:00 (ДД:ЧЧ:MM:CC) | 00:10:00 (10 минут) |
AkDataLifeTime | Время жизни данных | Временной интервал | 1.00:00:00 (ДД:ЧЧ:MM:CC) | 00:10:00 (10 минут) |
BatchDeleteLimitRows | Лимит удаляемых строк | Число строк | 1000 | 1 |
BatchDeleteDelayMsec | Интервал между удалениями данных | Число миллисекунд | 1000 | 0 |
Описание конфигурационного файла
В этом разделе описаны параметры конфигурационного файла Key Server am/indeed-key/app-settings.json. Не изменяйте значения без необходимости. Неправильная конфигурация может привести к неработоспособности компонента.
| Параметр | Описание |
|---|---|
Server:Url | URL-адрес для подключения к Key Server.Пример
|
TrustedClients | Произвольный уникальный идентификатор. Значение идентификатора должно совпадать со значением в настройке Доверенный ID Indeed Key Server в Management Console.ПодсказкаПри изменении параметра рекомендуется перейти в Management Console в раздел Конфигурация → Аутентификаторы → Indeed Key → Серверные настройки и, помимо настройки доверенного ID Indeed Key Server, задать внутренний URL-адрес Indeed Key Server. Также в разделе Настройки регистрации при выборе способа регистрации по email заполните обязательные поля и сохраните изменения. |
Storage:ConnectionString | Строка подключения к базе данных.Пример для Microsoft SQLПример для PostgreSQL |
Перезапуск Key Server
После редактирования конфигурационного файла необходимо перезапустить контейнер с приложением с помощью команды sudo docker-compose up -d.
Шифрование конфигурационного файла
- Зашифровать
- Расшифровать
- В терминале перейдите в каталог с утилитой для шифрования am/protection.
cd /am/protection - Выдайте права для запуска скрипта
protector.sh.sudo chmod 500 protector.sh - Чтобы зашифровать конфигурационные файлы, запустите скрипт
protector.shс параметромprotect.sudo bash ./protector.sh protect
- В терминале перейдите в каталог с утилитой для шифрования am/protection.
cd /am/protection - Выдайте права для запуска скрипта
protector.sh.sudo chmod 500 protector.sh - Чтобы расшифровать конфигурационные файлы, запустите скрипт
protector.shс параметромunprotect.sudo bash ./protector.sh unprotect
Проверка состояния сервера
Для проверки рабочего состояния сервера в контейнере Docker используйте метод Healthcheck:
http(s)://<dns_имя_сервера>:<порт>/healthcheck/isHealthy
На странице отображается следующая информация о состоянии компонента:
- статус компонента Key Server, время обработки запроса к нему;
- статус последнего запроса;
- список ошибок при наличии.
Пример результата проверки
{
"Entries": {
"Storage": {
"Data": {
"HealthCheckStatus": {
"PreviousCheckSucceeded": true,
"CheckState": "Succeeded",
"CheckStartDate": "2025-03-17T11:07:55.9606294+00:00",
"CheckDuration": "00:00:00.0014040"
}
},
"Description": null,
"Duration": "00:00:00.0000052",
"Exception": null,
"Status": 2,
"Tags": []
}
},
"Status": 2,
"TotalDuration": "00:00:00.0003921"
}
Сбор логов
Информация по включению логирования и сбору логов компонента Key Server находится в разделе Сбор логов серверных компонентов.