Общая инструкция по установке#

В общем случае установка Blitz Identity Provider выполняется в описанной ниже последовательности.

Совет

В зависимости от используемой операционной системы есть своя специфика по установке необходимого окружения. Для удобства воспользуйтесь экспресс-инструкциями для отечественных и зарубежных ОС.

Важно

Перед развертыванием ознакомьтесь с архитектурой развертывания Blitz Identity Provider.

Шаг 1. JDK#

На серверах, предназначенных для установки ПО сервера Blitz Identity Provider и административной консоли Blitz Identity Provider, необходимо установить и настроить JDK 11, руководствуясь официальной справочной документацией, используя один из следующих продуктов:

  • OpenJDK 11 Рекомендуется для сертифицированной версии;

    Примечание

    Для установки OpenJDK 11 в CentOS и RHEL выполните команду:

    sudo yum install java-11-openjdk-devel
    
  • Liberica JDK 11;

  • Axiom JDK 11 Certified Рекомендуется для сертифицированной версии;

  • Oracle JDK 11.

Шаг 2. Memcached#

Внимание

Версия memcached должна быть 1.4.15 или выше. Сервис memcached должен быть установлен на серверах, предназначенных для установки сервисов Blitz Identity Provider: blitz-console, blitz-idp, blitz-registration, blitz-recovery.

  1. Выполнить команду:

    yum -y install memcached
    
  2. После завершения установки добавить сервис memcached в автозапуск и запустить сервис:

    systemctl enable memcached
    systemctl start memcached
    
  1. Выполнить команду:

    apt-get install memcached
    
  2. После завершения установки добавить сервис memcached в автозапуск и запустить сервис:

    systemctl enable memcached
    systemctl start memcached
    

Важно

Сервис memcached запускается на порту 11211. Нужно убедиться, что этот порт открыт на межсетевых экранах и может быть использован для соединения между сервисами Blitz Identity Provider.

Шаг 3. СУБД#

Установка Couchbase Server

Инструкция по установке Couchbase Server приводится для CentOS 7 и RHEL 7. В случае развертывания под отечественные операционные системы в качестве СУБД рекомендуется использовать PostgreSQL.

  1. Установить Couchbase Server на каждый из выделенных под установку СУБД серверов согласно инструкции. Дистрибутив Couchbase Server можно скачать здесь.

    Важно

    В DEV/TEST-средах допустимо Couchbase Server устанавливать на существующие сервера с Blitz Identity Provider, но в этом случае нужно учесть, что в Couchbase Server используется своя встроенная memcached-служба, и во избежание конфликта необходимо скорректировать используемые Memcached порты в Blitz Identity Provider/Couchbase Server.

  2. Добавить сервис Couchbase Server в автозапуск и запустить сервис:

    systemctl enable couchbase-server
    systemctl start couchbase-server
    
  3. Проверить работоспособность сервиса, выполнив команду:

    systemctl status couchbase-server
    
  4. Инициализировать на каждом сервере кластер Couchbase Server согласно инструкции (на первом сервере инициализируется кластер, остальные сервера включаются в кластер). Все настройки можно задать как предложено по умолчанию, только нужно для каждого сервера в hostname задать полное имя сервера. В качестве имени сервера не рекомендуется использовать его IP-адрес.

  5. На любом из серверов кластера Couchbase Server выполнить скрипт по подготовке Couchbase Server к использованию Blitz Identity Provider. Скрипт находятся в директории couchbase в архиве resources.zip в составе дистрибутива Blitz Identity Provider. Скрипт нужно скопировать на любой сервер кластера Couchbase Server, перейти в директорию и выполнить скрипт создания buckets для хранения информации Blitz Identity Provider и индексов для выполнения поисковых запросов Blitz Identity Provider в БД:

    ./cb_init.sh
    

    В процессе выполнения скрипта понадобится ввести:

    • имя URL сервера Couchbase Server – ввести строку вида http://<hostname>:8091, где в качестве hostname указать имя хоста сервера, с которого выполняется скрипт;

    • логин учетной записи администратора Couchbase Server – задается при инициализации кластера при выполнении предыдущего пункта инструкции;

    • пароль учетной записи администратора Couchbase Server – задается при инициализации кластера при выполнении предыдущего пункта инструкции;

    • логин учетной записи Couchbase Server, которая создастся в процессе выполнения этого скрипта для подключения сервисов Blitz Identity Provider;

      Совет

      Рекомендуется задать имя blitz.

    • пароль учетной записи Couchbase Server для подключения приложений Blitz Identity Provider.

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

    1. В консоли администрирования Couchbase Server отредактировать настройки количества копий данных на различных экземплярах Couchbase. Для этого в меню Buckets поочередно выбрать каждый bucket, нажать на нем Edit и задать значение настройки Enable в блоке Replicas и установить число реплик. Для кластера из трех серверов рекомендуется задать в настройке значение 1 для числа реплик. Затем в меню Settings рекомендуется включить настройку Enable auto-failover и задать значение «Timeout» в 30 секунд (auto-failover будет работать, только если в кластере СУБД не менее 3 серверов и настроена репликация для bucket).

    2. Настроить резервное копирование БД.

Установка и настройка PostgreSQL

Внимание

Версия PostgreSQL должна быть 9.6 или новее.

Установить PostgreSQL согласно инструкции.

  1. Выполнить команду:

    apt-get install postgresql
    
  2. После завершения установки запустить сервис:

    systemctl start postgresql
    

После завершения установки PostgreSQL в выбранной ОС необходимо выполнить скрипт по подготовке PostgreSQL к использованию Blitz Identity Provider. Скрипты находятся в директории postgres в архиве resources.zip в составе дистрибутива Blitz Identity Provider. Скрипты нужно скопировать на сервер PostgreSQL, перейти в директорию и по очереди выполнить команды:

su - postgres

createdb blitzdb

psql
CREATE USER blitz WITH ENCRYPTED PASSWORD 'set-your-pwd';
GRANT ALL PRIVILEGES ON DATABASE blitzdb TO blitz;
GRANT ALL ON ALL TABLES IN SCHEMA public TO blitz;

psql -d blitzdb -U blitz -f 000-SCRIPT000.sql
…
psql -d blitzdb -U blitz -f NNN-SCRIPTNNN.sql

Вместо set-your-pwd нужно вставить пароль, который будет использоваться для подключения к PostgreSQL.

Вместо 000-SCRIPT000.sql NNN-SCRIPTNNN.sql нужно вставить имена скриптов из директории postgres/ddl из архива resources.zip. Например:

psql -d blitzdb -U blitz -f 000-service-tasks.sql
psql -d blitzdb -U blitz -f 001-init-database.sql
psql -d blitzdb -U blitz -f 002-new_pp_columns.sql
psql -d blitzdb -U blitz -f 003-usd_id_table.sql
psql -d blitzdb -U blitz -f 004-usr_auth_table.sql
psql -d blitzdb -U blitz -f 005-usr_agt_table.sql
psql -d blitzdb -U blitz -f 006-usr_htp_hmc_alg.sql
psql -d blitzdb -U blitz -f 007-usr_atr_cfm.sql
psql -d blitzdb -U blitz -f 008-wak.sql
psql -d blitzdb -U blitz -f 009-fix_pp_column.sql
psql -d blitzdb -U blitz -f 010-add_usr_prp.sql
psql -d blitzdb -U blitz -f 011-pp_audit.sql
psql -d blitzdb -U blitz -f 012-geo_to_audit.sql
psql -d blitzdb -U blitz -f 013-tasks.sql
psql -d blitzdb -U blitz -f 014-sec_ch_ua.sql
psql -d blitzdb -U blitz -f 015-5.12.0.sql
psql -d blitzdb -U blitz -f 016-5.13.0.sql
psql -d blitzdb -U blitz -f 017-5.15.0.sql
psql -d blitzdb -U blitz -f 018-5.17.0.sql
psql -d blitzdb -U blitz -f 019-5.18.0.sql
psql -d blitzdb -U blitz -f 020-5.20.0.sql
psql -d blitzdb -U blitz -f 021-5.21.0.sql
psql -d blitzdb -U blitz -f 022-5.23.0.sql
psql -d blitzdb -U blitz -f 023-5.26.0.sql

После выполнения скрипта необходимо настроить резервное копирование БД.

Шаг 4. RabbitMQ#

Опционально

Установка сервера очередей RabbitMQ опциональна и требуется, если сервер очередей будет использоваться для передачи событий в смежные системы или в качестве брокера сообщений.

Установить RabbitMQ согласно инструкции.

  1. Выполнить команду:

    apt-get install rabbitmq-server
    
  2. После завершения установки запустить сервис:

    systemctl start rabbitmq-server
    

Шаг 5. Blitz Identity Provider#

Для установки сервисов blitz-console, blitz-idp, blitz-registration, blitz-recovery используется единый установщик blitz-5.X.X.bin.

При установке сертифицированной версии Blitz Identity Provider дополнительно используется файл blitz-idp-thirdparty-5.X.X.tar.gz, содержащий архив с используемыми Blitz Identity Provider сторонними библиотеками.

Важно

Консоль управления можно установить на любой сервер, где установлен сервер Blitz Identity Provider, но рекомендуется выделить под установку консоли управления отдельный административный сервер. На сервере предварительно должны быть установлены JDK и memcached.

Для установки приложений blitz-console, blitz-idp, blitz-registration, blitz-recovery необходимо:

  1. На предназначенные для установки сервера скопировать (например, в директорию /tmp) из дистрибутива Blitz Identity Provider файл blitz-5.X.X.bin.

    В случае установки сертифицированной версии необходимо также скопировать blitz-idp-thirdparty-5.X.X.tar.gz.

  2. Запустить установщик blitz-5.X.X.bin, указав параметры запуска:

    • -i – список устанавливаемых приложений, разделенных через пробел (например, idp console registration recovery);

    • -j – значение JAVA_HOME – директория, в которую на сервере установлен JDK.

    Установка будет произведена в директорию /usr/share/identityblitz.

    Пример запуска установщика#
    cd /tmp
    chmod +x blitz-5.X.X.bin
    ./blitz-5.X.X.bin -- -j /opt/oracle/jdk -i "idp console recovery registration"
    
    Пример вывода в консоль при работе установщика#
    Verifying archive integrity...  100%   MD5 checksums are OK. All good.
    Uncompressing Blitz IDP  100%
    ****************************************************************
    Application blitz-registration installed
    Application blitz-recovery installed
    Application blitz-console installed
    Application blitz-idp installed
    ****************************************************************
    
  3. Создать файл blitz_param.txt, в котором задать первичные настройки Blitz Identity Provider:

    • DOMAIN – внешнее имя домена, на котором будет функционировать Blitz Identity Provider;

    • ROOT_CONTEXT – URL-путь, на котором будет функционировать Blitz Identity Provider;

      Примечание

      Если параметр не указывать, то по умолчанию будет задан /blitz.

    • ADMIN_USERNAME – имя учетной записи администратора в Blitz Identity Provider;

      Примечание

      Если параметр не указывать, то по умолчанию будет задан admin.

    • ADMIN_PASSWORD – пароль от учетной записи администратора в Blitz Identity Provider;

    • KEYSTORE_PASSWORD – пароль от создаваемого в процессе установки ключевого контейнера;

      Примечание

      Если параметры ADMIN_PASSWORD и KEYSTORE_PASSWORD не указывать, то эти пароли будут автоматически сгенерированы и выведены в результатах работы скрипта конфигурации.

    • MEMCACHED_SERVERS – адреса серверов с memcached;

    • DB_MODE – используемая СУБД: CB для Couchbase Server;

    • CB_NODES – адреса серверов с СУБД Couchbase Server;

    • CB_USERNAME – имя учетной записи в СУБД Couchbase Server (по умолчанию blitz);

    • CB_PASSWORD – пароль от учетной записи в СУБД Couchbase Server;

    • TRUSTED_SERVERS – адреса подсетей серверов c сервисами Blitz Identity Provider (по умолчанию 127.0.0.1/32).

      Пример конфигурационного файла#
      DOMAIN=test
      MEMCACHED_SERVERS="192.168.122.10 127.0.0.1"
      DB_MODE=CB
      CB_NODES="192.168.122.20 192.168.122.21 192.168.122.22"
      CB_USERNAME=blitz
      CB_PASSWORD=12ABcd45
      
    • DOMAIN – внешнее имя домена, на котором будет функционировать Blitz Identity Provider;

    • ROOT_CONTEXT – URL-путь, на котором будет функционировать Blitz Identity Provider;

      Примечание

      Если параметр не указывать, то по умолчанию будет задан /blitz.

    • ADMIN_USERNAME – имя учетной записи администратора в Blitz Identity Provider;

      Примечание

      Если параметр не указывать, то по умолчанию будет задан admin.

    • ADMIN_PASSWORD – пароль от учетной записи администратора в Blitz Identity Provider;

    • KEYSTORE_PASSWORD – пароль от создаваемого в процессе установки ключевого контейнера;

      Примечание

      Если параметры ADMIN_PASSWORD и KEYSTORE_PASSWORD не указывать, то эти пароли будут автоматически сгенерированы и выведены в результатах работы скрипта конфигурации.

    • MEMCACHED_SERVERS – адреса серверов с memcached;

    • DB_MODE – используемая СУБД: PG для PostgreSQL;

    • PG_HOSTNAME – адрес СУБД PostgreSQL;

    • PG_DB_NAME – имя БД в СУБД PostgreSQL;

      Совет

      Рекомендуется использовать blitzdb.

    • PG_USERNAME – имя учетной записи в СУБД PostgreSQL;

      Совет

      Рекомендуется использовать blitz.

    • PG_PASSWORD – пароль от учетной записи в СУБД PostgreSQL;

    • TRUSTED_SERVERS – адреса подсетей серверов c сервисами Blitz Identity Provider (по умолчанию 127.0.0.1/32).

      Пример конфигурационного файла#
      DOMAIN=test
      ROOT_CONTEXT=/blitz
      MEMCACHED_SERVERS="127.0.0.1 192.168.122.96"
      DB_MODE=PG
      PG_HOSTNAME=192.168.122.20
      PG_DB_NAME=blitzdb
      PG_USERNAME=blitz
      PG_PASSWORD=123456
      TRUSTED_SERVERS="127.0.0.1/32 192.168.122.96/32 192.168.122.0/24"
      ADMIN_USERNAME=admin1
      ADMIN_PASSWORD=0123456789
      KEYSTORE_PASSWORD=0123456789
      
  4. Запустить скрипт первоначальной настройки Blitz Identity Provider, указав путь к файлу blitz_param.txt:

    /usr/share/identityblitz/blitz-console/bin/configure -f blitz_param.txt
    

    В результате выполнения скрипта будут настроены конфигурационные файлы, а также будет сгенерирован и показан логин/пароль администратора Blitz Identity Provider и сгенерирован пароль от ключевого контейнера:

    ****************************************************************
    Your instance is configured on domain: test.loc
    The Administration Console available on addresses:
     http://testinstallation.local:9001/blitz/console
    
    Administration user credentials of Console:
      username - admin
      password - 98aAB0D3f2
    Your can change user credentials at file - /usr/share/identityblitz/blitz-config/credentials
    
    Create keystore /usr/share/identityblitz/blitz-config/blitz-keystore.bks and generate:
     - JWS(RSA256) keypair - jws_rs256_rsa_default
     - AES(AES128) security key - jdbc
    
    Generated password for keystore: BeEBcd2239
    ****************************************************************
    

    Совет

    Если при запуске установщика были допущены ошибки ввода, так что установка была проведена с неправильными параметрами, то можно воспользоваться следующей командой для удаления файлов, которые создал установщик, чтобы иметь возможность вновь провести установку начисто:

    rm -rf /usr/share/identityblitz /etc/default/blitz-* /etc/blitz-* /var/log/identityblitz/ /lib/systemd/system/blitz-*
    
  5. Добавить сервисы в автозапуск на соответствующих им серверах и запустить их:

    systemctl enable blitz-console
    systemctl start blitz-console
    systemctl enable blitz-idp
    systemctl start blitz-idp
    systemctl enable blitz-registration
    systemctl start blitz-registration
    systemctl enable blitz-recovery
    systemctl start blitz-recovery
    

Шаг 6. Синхронизация файлов конфигурации#

Только для установки в кластере

При развертывании Blitz Identity Provider в кластере необходимо настроить синхронизацию конфигурации между серверами кластера Blitz Identity Provider:

Действия на сервере с консолью управления
  1. Установить rsync и incron:

    sudo yum install rsync incron
    

    или (для Astra Linux Special Edition 1.6)

    sudo apt install rsync incron
    
  2. Переключиться в пользователя blitz:

    sudo su - blitz
    
  3. Сгенерировать ssh-ключ командой (на все задаваемые утилитой вопросы рекомендуется выбрать ответы по умолчанию):

    ssh-keygen
    
  4. Прочитать и сохранить для дальнейшего использования публичный ssh-ключ:

    cat /usr/share/identityblitz/.ssh/id_rsa.pub
    
  5. Открыть настройки incrontab:

    incrontab -e
    

    В открывшемся окне редактора вставить следующее:

    /usr/share/identityblitz/blitz-config IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh ./ $# $%
    /usr/share/identityblitz/blitz-config/assets IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh assets $# $%
    /usr/share/identityblitz/blitz-config/assets/services IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh assets $# $%
    /usr/share/identityblitz/blitz-config/assets/themes IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh assets $# $%
    /usr/share/identityblitz/blitz-config/apps IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh apps $# $%
    /usr/share/identityblitz/blitz-config/saml IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh saml $# $%
    /usr/share/identityblitz/blitz-config/saml/conf IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh saml $# $%
    /usr/share/identityblitz/blitz-config/saml/credentials IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh saml $# $%
    /usr/share/identityblitz/blitz-config/saml/metadata IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh saml $# $%
    /usr/share/identityblitz/blitz-config/custom_messages IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh custom_messages $# $%
    /usr/share/identityblitz/blitz-config/custom_messages/dics IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh custom_messages $# $%
    /usr/share/identityblitz/blitz-config/devices IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh devices $# $%
    /usr/share/identityblitz/blitz-config/simple IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh simple $# $%
    /usr/share/identityblitz/blitz-config/certs IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh certs $# $%
    /usr/share/identityblitz/blitz-config/flows/login IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh flows $# $%
    /usr/share/identityblitz/blitz-config/flows/reg IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh flows $# $%
    /usr/share/identityblitz/blitz-config/flows/extIdps IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh flows $# $%
    /usr/share/identityblitz/blitz-config/token_exchange IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh token_exchange $# $%
    /usr/share/identityblitz/blitz-config/token_exchange/rules IN_MODIFY,IN_ATTRIB,IN_CREATE,IN_DELETE,IN_CLOSE_WRITE /usr/share/identityblitz/scripts/config_sync.sh token_exchange $# $%
    
  6. Создать файл /usr/share/identityblitz/scripts/config_sync.sh и вставить в него скрипт:

    #!/bin/bash
    app_dir=/usr/share/identityblitz/blitz-config
    node_list="NODES_LIST"
    for node in $(echo "${node_list}"); do
    rsync -r -a --delete ${app_dir}/${1} ${USER}@${node}:${app_dir};
    done
    
  7. В качестве значения node_list, вместо NODES_LIST, необходимо прописать список hostname узлов кластера Blitz (кроме узла консоли управления Blitz Console). Вписывать значения нужно через пробел. Например:

    node_list="app1.local app2.local"
    
  8. Сделать файл /usr/share/identityblitz/scripts/config_sync.sh исполняемым:

    chmod +x /usr/share/identityblitz/scripts/config_sync.sh
    
  9. Запустить incrontab, выполнив под пользователем root команду:

    systemctl enable incrond
    systemctl start incrond
    
Действия на остальных серверах Blitz Identity Provider
  1. Установить rsync:

    sudo yum install rsync
    

    или (для Astra Linux Special Edition 1.6)

    sudo apt install rsync
    
  2. Переключиться в пользователя blitz:

    sudo su - blitz
    
  3. Выполнить следующий скрипт:

    mkdir .ssh
    touch .ssh/authorized_keys
    chmod 700 .ssh
    chmod 640 .ssh/authorized_keys
    
  4. Открыть файл .ssh/authorized_keys любым редактором, например, vim, и вставить публичный ssh-ключ, полученный ранее на сервере консоли управления Blitz Console.

Шаг 7. Веб-сервер#

В качестве веб-сервера рекомендуется использовать nginx или HAProxy.

nginx

Пример настроечного файла для nginx включен в дистрибутив Blitz Identity Provider – это файл blitz-idp.conf из директории nginx в архиве resources.zip. Нужно скорректировать следующие блоки настроек, после чего загрузить файл на сервер с nginx (каталог /etc/nginx/conf.d):

  1. Скорректировать блок настроек балансировки:

upstream blitz-idp {
    server [BLITZ-IDP-NODE-01]:9000 max_fails=3 fail_timeout=120;
    server [BLITZ-IDP-NODE-02]:9000 max_fails=3 fail_timeout=120;
}
upstream blitz-reg {
    server [BLITZ-REG-NODE-01]:9002 max_fails=3 fail_timeout=120;
    server [BLITZ-REG-NODE-02]:9002 max_fails=3 fail_timeout=120;
}
upstream blitz-rec {
    server [BLITZ-REC-NODE-01]:9003 max_fails=3 fail_timeout=120;
    server [BLITZ-REC-NODE-02]:9003 max_fails=3 fail_timeout=120;
}
upstream blitz-console {
    server [BLITZ-CONSOLE-NODE-01]:9001 max_fails=3 fail_timeout=120;
}

Параметры имеют следующие назначения:

  • [BLITZ-%%%-NODE-XX] – имена (hostname) серверов с сервисами Blitz Identity Provider (blitz-idp, blitz-registration, blitz-recovery);

  • [BLITZ-CONSOLE-NODE-01] – имя (hostname) сервера с Blitz Console.

  1. Скорректировать блок настроек терминирования TLS:

ssl_certificate         [BLITZ-SSL-CERT-FILE];
ssl_certificate_key     [BLITZ-SSL-PRIVATEKEY-FILE];

Параметры имеют следующие назначения:

  • [BLITZ-SSL-CERT-FILE] – путь (полное имя) к файлу с TLS-сертификатом сервера;

  • [BLITZ-IDP-CONSOLE-NODE-01] – путь (полное имя) к файлу с TLS-ключом сервера.

  1. Следует учесть, что Blitz Identity Provider игнорирует заголовок X-Forwarded-Proto https, если в nginx X-Forwarded-For содержит более одного IP-адреса, например:

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

В этом случае рекомендуется использовать следующее значение директивы:

proxy_set_header X-Forwarded-For $client_ip

При этом client_ip вычисляется с помощью map. Из списка всегда всегда берется первое значение:

map $http_x_forwarded_for $client_ip {
    default $remote_addr;
    "~(?<IP>([0-9]{1,3}\.){3}[0-9]{1,3})*" $IP;
    "~(?<IP>([0-9]{1,3}\.){3}[0-9]{1,3}),.*" $IP;
}
  1. Скопировать на сервер nginx в папку /usr/share/nginx/html папку static_errors с файлами страниц отображения ошибок сервера. Файлы с примерами оформления страниц ошибок можно взять в дистрибутиве Blitz Identity Provider – это папка static_errors в архиве resources.zip.

HAProxy

Пример настроечного файла для HAProxy включен в дистрибутив Blitz Identity Provider – это файл haproxy.cfg из директории haproxy в архиве resources.zip. Конфигурационный файл рассчитан на HAProxy версии 2.2+, поскольку в блоке используются директивы http-errors, errorfile, errorfiles для переопределения использования страниц ошибок из поставки Blitz Identity Provider.

Ограничение - статический контент, в отличие от nginx, HAProxy не поддерживаются. Изображения, favicon и т.п. необходимо подгружать с отдельного сервера. За это отвечает правило acl is-blitz-static, маршрут use_backend blitz-static if is-blitz-static и backend blitz-static.

Блок global - определяет системные параметры (пользователь, от имени которого выполняется процесс, параметры логирования, разрешенные алгоритмы шифрования и т.д.).

Секция defaults - определяет общие параметры для следующих за ним секций.

Секция frontend - определяет правила обработки входящих запросов.

Секция backend - описывает сервера которым будут перенаправлены запросы.

Основной интерес представляют секции backend с включенными активными проверками:

  1. Запустить алгоритм балансировки:

    balance roundrobin
    
  2. Включить http-проверки backend:

    option httpchk
    
  3. Произведение начала сценария проверки.

  4. Открыть новое соединение:

    http-check connect
    
  5. Отправить get-запрос к лк:

    http-check send meth GET uri /blitz/profile hdr Host rocky8
    
  6. Проверить установку сессионной cookie blc:

    http-check expect hdr name set-cookie value -m beg "blc="
    
  7. Проверить наличие редиректа:

    http-check expect status 303
    
  8. Появятся записи для каждого сервера приложений. Интервал проверки сервера составляет 5 секунд. В случае 2-х ошибок подряд пометить, как недоступный. После 1-ой успешной проверки пометить, как доступный.

  9. Контролировать поток ошибок на уровне l7. Если возникнет более 10-ти ошибок, тогда пометить, как недоступный. При успешном health-check будет отмечен, как доступный.

  10. Ввести в балансировку постепенно за 10с:

    server blitz-idp-local 127.0.0.1:9000 check inter 5s rise 1 fall 2 observe layer7 error-limit 10 on-error mark-down slowstart 10s
    

Шаг 8. LDAP-каталог#

Опционально

В случае необходимости развертывания нового LDAP-каталога рекомендуется в качестве LDAP-каталога использовать 389 Directory Server, который входит в состав ОС:

  1. Выполнить команды установки:

    yum install 389-ds-base 389-adminutil 389-admin 389-admin-console 389-console 389-ds-console
    yum install xauth
    
  2. Установить limits в соответствии с рекомендациями 389 Directory Server:

    echo "fs.file-max = 64000" >> /etc/sysctl.conf
    echo "* soft nofile 8192" >> /etc/security/limits.conf
    echo "* hard nofile 8192" >> /etc/security/limits.conf
    echo "ulimit -n 8192" >> /etc/profile
    
  3. Инициализировать LDAP-каталог. Ответить на вопросы установщика:

    setup-ds-admin.pl
    
  4. После завершения установки добавить LDAP-каталог в автозапуск и запустить сервис:

    systemctl enable dirsrv.target
    systemctl start dirsrv.target
    
  1. Выполнить команду установки и скрипт инициализации каталога:

    apt-get install 389-ds-base
    setup-ds
    
  2. После завершения установки добавить LDAP-каталог в автозапуск и запустить сервис:

    systemctl enable dirsrv.target
    systemctl start dirsrv.target
    

После установки 389 Directory Server выполнить его настройку для подготовки использования совместно с Blitz Identity Provider. Для этого:

  1. Скопировать на LDAP-сервер конфигурационные скрипты LDAP из состава дистрибутива Blitz Identity Provider (это папка ldap в архиве resources.zip).

  2. Выполнить скрипт первоначальной настройки ldap_init.sh – скрипт создаст ветку sub для хранения пользователей, сервисного пользователя reader, настроит права доступа пользователя и его парольную политику (бессрочный пароль для сервисного пользователя), создаст класс blitz-schema с атрибутами uid, mail, mobile, sn, name:

    chmod +x ldap_init.sh
    ./ldap_init.sh
    
  3. Выполнить скрипт настройки TLS на сервере LDAP (скрипт создает копию текущей NSS DB, затем создает новую NSS DB, сертификаты и файл pin.txt для запуска сервера без ввода пароля):

    chmod +x ldap_ssl.sh
    ./ldap_ssl.sh
    
  4. После выполнения скрипта перезапустить LDAP-каталог:

    systemctl restart dirsrv.target
    
  5. Если требуется настроить и включить глобальные парольные политики в LDAP, то скорректировать и выполнить скрипт ldap_pwdpolicy.sh:

    chmod +x ldap_pwdpolicy.sh
    ./ldap_pwdpolicy.sh
    
  6. Если требуется создать дополнительные атрибуты:

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

    2. выполнить скрипт создания дополнительных атрибутов, ответить на его вопросы:

      chmod +x ldap_add_attr.sh
      ./ldap_add_attr.sh
      
    3. отредактировать текстовый файл по адресу /etc/dirsrv/slapd-<название инстанса>/schema/99user.ldif, добавить новые атрибуты в objectclass с именем blitz-schema в раздел MAY;

    4. перезапустить LDAP-каталог, чтобы применить изменения схемы каталога:

      systemctl restart dirsrv.target