Skip to main content
Version: Indeed Access Manager 9.2

Indeed Core Server

Indeed Core Server (Core Server) — это основной модуль системы, который отвечает за:

  • централизованное хранение аутентификаторов, паролей и настроек пользователей;
  • централизованное управление и администрирование;
  • централизованный прием и обработку запросов от других модулей системы;
  • координирование действий отдельных модулей и системы в целом.

Core Server кеширует данные при получении пользователя, группы, контейнера, сценариев авторизации и бизнес логики. Основные запросы в каталог — получение пользователя, группы, контейнера по ID — отдаются из кеша. Все остальные запросы — по имени, по телефону, email — только обновляют кеш данными из каталога. Первый запрос пользователя по ID также обновляет кеш, последующие берутся из кеша. Время жизни объекта в кеше — 10 минут.

Установка Core Server

Отдельно устанавливать Core Server не нужно. Компонент устанавливается автоматически при распаковке архива am-<номер версии>.tar.gz.

Для корректной работы компонента Core Server необходимо выполнить следующие шаги:

  1. Отредактируйте конфигурационный файл Core Server.
  2. Запустите контейнер с приложением.
  3. Настройте первичные права администратора.
  4. Настройте начальную аутентификацию.
  5. При необходимости задайте опциональные настройки.

Редактирование конфигурационного файла

Для настройки Core Server измените конфигурационный файл am/core/app-settings.json.

Важно!

Измените только параметры со значениями вида !!! комментарий !!!.

  1. В объекте Behavior для параметра Administration в строке RootAdministrator укажите имя привилегированного пользователя в формате UserId_GUID.

    Где:

    • UserId — произвольный уникальный идентификатор каталога (параметр Id).
    • GUID — уникальный идентификатор пользователя из Active Directory.

    Получить GUID можно с помощью команды на контроллере домена:

    Get-ADUser -Filter 'Name -like "<User logon name>"' | FT Name,ObjectGUID -A
  2. Задайте каталог конечных пользователей, для этого измените следующие строки в параметре UserCatalog:

    • RootProvider — идентификатор корневого пользовательского каталога. Также с помощью этого параметра вы можете объединить несколько каталогов через правило OR.

      Пример настройки каталога
      "Administration": {
      "RootAdministrator": "UserId_15511150-6804-4bf2-ac7c-b8a8520ea357"
      }
      },
      "UserCatalog": {
      "RootProvider": "UserId",
      "Providers": {
      "Ldap": [
      {
      "Id": "UserId",
      "Domain": "second.com",
      "Port": 636,
      "SecureSocketLayer": true,
      "ContainerPath": "CN=users,DC=second,DC=com",
      "UserName": "admin@second.com",
      "Password": "Q1w2e3r4"
      }
      ]
      },
    • Id — произвольный уникальный идентификатор каталога. Если вы планируете использовать базу данных от версии Access Manager 8.2.x, идентификаторы каталога должны совпадать.

    • Domain — полное имя контроллера домена Active Directory, в котором находится каталог.

    • Port — порт для соединения по протоколу LDAPS/LDAP, по умолчанию задано значение 636.

      Важно!

      Не рекомендуется использовать незащищенное LDAP-соединение ("Port": 389, "SecureSocketLayer": false). При таком соединении ваши данные не защищены.

    • SecureSocketLayer — опция для включения или отключения SSL для защищенного соединения, по умолчанию указано значение true.

    • ContainerPath — путь к контейнеру в виде Distinguished Name или весь домен, если для хранения пользователей используется весь домен.

    • UserName — имя сервисной учетной записи для подключения к каталогу пользователей.

    • Password — пароль сервисной учетной записи.

      Важно!

      Не изменяйте настройки в параметре UserCatalog в секции SensitiveDataEncryption.

  3. В объекте Storage в секции SensitiveDataEncryption параметры Algorithm и Key заполняются автоматически при генерации ключа.

    Чтобы сгенерировать ключ, запустите скрипт am/tools/tool_encryption_db.sh. Для просмотра и выбора алгоритма, можно вывести справку.

    sudo bash ./tool_encryption_db.sh --help
    sudo bash ./tool_encryption_db.sh -a Aes
    Примечание

    Если при обновлении вы используете базу данных от Access Manager 8.x, укажите значения Algorithm и Key из конфигурационного файла Core Server для Access Manager 8.x (C:\inetpub\wwwroot\am\core\Web.config, тег encryptionSettings). Таким образом вы избежите повторного шифрования базы данных.

  4. Укажите параметры базы данных. Для этого измените следующие строки в объекте Storage для параметра Provider:

    • Type — укажите используемый тип базы данных. Поддерживается PostgreSQL.

    • ConnectionString — укажите следующие данные:

      • server — ip-адрес сервера базы данных.
      • port — используемый порт. По умолчанию — 5432.
      • user id — имя пользователя, который имеет полные права для базы данных.
      • password — пароль пользователя.
      • database — база данных, содержащая данные об Indeed Core Server.
      Пример
      "Provider": {
      "Type": "PostgreSql",
      "ConnectionString": "server=192.168.80.30;port=5432;user id=amservice;password=Q1w2e3r4;database=AMdebian2"
      },
  5. В параметре Authentication для параметра Sign поля publicKey и privateKey заполняются автоматически при генерации публичного и секретного ключа для подписи токена пользователя.

    Чтобы сгенерировать публичный и секретный ключи, запустите скрипт am/tools/tool_keygen.sh:

    sudo bash ./tool_keygen.sh
    Пример
    "Authentication": {
    "Token": {
    "Sign": {
    "privateKey": "значение секретного ключа",
    "publicKey": "значение публичного ключа"
    }
    },

Включить/Отключить шифрование конфигурационного файла

  1. В терминале перейдите в каталог с утилитой для шифрования am/protection.

    cd /am/protection
  2. Выдайте права для запуска скрипта protector.sh.

    sudo chmod 500 protector.sh
  3. Чтобы зашифровать конфигурационные файлы, запустите скрипт protector.sh с параметром protect.

    sudo bash ./protector.sh protect
  4. Чтобы расшифровать конфигурационные файлы, запустите скрипт protector.sh с параметром unprotect.

    sudo bash ./protector.sh unprotect

Запуск контейнера

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

sudo docker-compose up -d

Получение первичных прав администратора

Перед настройкой первичных прав администратора необходимо выполнить настройку собственного клиентского сертификата.

Для получения первичных прав перейдите в каталог am/tools и запустите скрипт tool_set_admin.sh с параметрами. Все параметры (кроме справки -h) являются обязательными.

Пример
sudo bash tool_set_admin.sh -u amadmin@test.local -n 2 -p userpassword -c mycert.pfx -s certpassword

Параметры:

  • -u <имя пользователя>

  • -n <формат имени пользователя>

    Возможные значения:

    • 2 - PrincipalName
    • 3 - SamCompatibleName
    • 4 - DistinguishedName
    • 5 - Sid
  • -p <пароль пользователя>

  • -c <имя/путь client.pfx>— собственный клиентский сертификат, созданный на этапе подготовки сертификатов.

  • -s <пароль client.pfx>— пароль от собственного клиентского сертификата.

  • -h — вызов справки.

При успешном выполнении скрипта пользователь будет добавлен как первичный администратор. После использования скрипт можно удалить.

Подсказка

В качестве пользователя в скрипте укажите того же пользователя, которого вы указываете в параметре RootAdministrator конфигурационного файла Core Server app-settings.json.

Настройка начальной аутентификации

Для начальной аутентификации в Core Server и приложениях Management Console и User Console настройте провайдер Windows Password.

Для аутентификации рекомендуется использовать защищенное соединение по протоколу LDAPS с использованием 636 порта.

Чтобы настроить начальную аутентификацию, необходимо сформировать значение параметра StringValue в конфигурационном файле am/core/initial-settings.json:

  1. Перейдите в каталог am/tools/initial_settings и откройте для редактирования файл initial_settings.json.

    • В поле Filter укажите регулярное выражение.

    • (Опционально) Если при создании LDAPS-сертификата не было задано Дополнительное имя субъекта, в поле FallbackHost укажите значение своего домена.

      Пример файла initial_settings.json
       {
      "Filter": "^domain1\\.com$",
      "Port": 636,
      "Secure": true,
      "FallbackHost": "dc.domain1.com"
      },
      {
      "Filter": ".*(\\.domain2.com)|(\\.domain3)$",
      "Port": 389,
      "Secure": false
      },
      "Filter": "^domain4\\.com$",
      "Port": 636,
      "Secure": true,
      "FallbackHost": "dc.domain4.com"
      }

  2. Сохраните файл initial_settings.json.

  3. Перейдите в каталог am/tools/initial_settings и запустите скрипт tool_initial_settings.sh.

В результате выполнения скрипта в конфигурационном файле am/core/initial-settings.json записывается значение параметра StringValue.

Пример параметра StringValue
[{\u0022F\u0022:\u0022^domain\\\\.com$\u0022,\u0022P\u0022:636,\u0022S\u0022:true,\u0022FH\u0022:\u0022dc.domain.com\u0022}]

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

Чтобы проверить состояние сервера, в браузере введите адрес Core Server в формате https://<полное_dns_имя_сервера>/am/core.

Автоматически вы будете перенаправлены на https://<полное_dns_имя_сервера>/am/core/api/v6/healthCheck/index.

Страница обновляется автоматически каждые 60 секунд.

На странице доступна следующая информация о состоянии сервера:

  • статус доступности каталога пользователей, время обработки запроса к нему;
  • статус хранилища, время обработки запроса к нему;
  • список установленных провайдеров аутентификации, их статус и время загрузки;
  • статус компонента Indeed Log Server;
  • список ошибок при наличии.
Информация

В целях безопасности список установленных провайдеров аутентификации и информация об ошибках доступны только если вы открыли страницу с локального адреса.

Пример результата проверки
User Catalog{
"PreviousCheckSucceeded": true,
"CheckState": "Succeeded",
"CheckStartDate": "2025-02-27T11:18:53.4937754+00:00",
"CheckDuration": "00:00:00.0088105"
}

Storage{
"PreviousCheckSucceeded": true,
"CheckState": "Succeeded",
"CheckStartDate": "2025-02-27T11:18:53.4947917+00:00",
"CheckDuration": "00:00:00.0033496"
}

Authentication Providers{
"PreviousCheckSucceeded": false,
"CheckState": "Succeeded",
"CheckStartDate": "2025-02-27T11:12:53.5523742+00:00",
"CheckDuration": "00:00:00.0089791"
}

LogServer{
"PreviousCheckSucceeded": false,
"CheckState": "Succeeded",
"CheckStartDate": "2025-02-27T11:12:53.5643188+00:00",
"CheckDuration": "00:00:00.0457894"
}

Сбор логов

Информация по включению логирования и сбору логов компонента Core Server находится в разделе Сбор логов серверных компонентов.

Опциональные настройки