Skip to main content
Version: Indeed Access Manager 9.4

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 для созданной базы данных.

  1. Откройте конфигурационный файл am/ls/clientApps.config и расскоментируйте строку:

    <Target Id="DbTargetMssqlIndeedKey" Type="mssql" />

    Где DbTargetMssqlIndeedKey — это название конфигурационного файла в папке am/ls/targets.

  2. Раскомментируйте блок <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.
  3. При необходимости использовать дополнительное хранилище данных, укажите его в секции Targets:

    Пример
    <Targets>
    ...
    <Target Id="mssqlTargetAM" Type="mssql"/>
    </Targets>
  4. Перейдите в каталог 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>

Просмотр событий 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, falsetrueОтсутствует
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Лимит удаляемых строкЧисло строк10001
BatchDeleteDelayMsecИнтервал между удалениями данныхЧисло миллисекунд10000

Описание конфигурационного файла

Важно

В этом разделе описаны параметры конфигурационного файла Key Server am/indeed-key/app-settings.json. Не изменяйте значения без необходимости. Неправильная конфигурация может привести к неработоспособности компонента.

ПараметрОписание
Server:
Url
URL-адрес для подключения к Key Server.
Пример
"Server": {
"Url": "http(s)://[Server address]:{port}",
"Logon": {
"Delay": "00:05:00"
}
}
Где:
  • [Server address] — значение переменной INDEED_KEY_EXTERNAL_ENDPOINT_NAME, заданное в файле am/.env.
  • {port} — значение переменной INDEED_KEY_HTTPS_PORT_EXTERNAL, заданное в файле am/.env.
Примечание: 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
"Storage": {
"Provider": {
"Type": "Mssql",
"ConnectionString": "Data Source=[Db host address];Initial Catalog=[AM Db];User ID=[Db service account];Password=[Db service password];TrustServerCertificate=True;"
}
}
Пример для PostgreSQL
"Storage": {
"Provider": {
"Type": "PostgreSql",
"ConnectionString": "server=192.168.80.30;port=5432;user id=amservice;password=Q1w2e3r4;database=IndeedKey"
}
}

Перезапуск Key Server

После редактирования конфигурационного файла необходимо перезапустить контейнер с приложением с помощью команды sudo docker-compose up -d.

Шифрование конфигурационного файла

  1. В терминале перейдите в каталог с утилитой для шифрования am/protection.
    cd /am/protection
  2. Выдайте права для запуска скрипта protector.sh.
    sudo chmod 500 protector.sh
  3. Чтобы зашифровать конфигурационные файлы, запустите скрипт protector.sh с параметром protect.
    sudo bash ./protector.sh protect

Проверка состояния сервера

Для проверки рабочего состояния сервера в контейнере 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 находится в разделе Сбор логов серверных компонентов.