Сергей Крючков 87c6dc76d0 | ||
---|---|---|
.. | ||
src/main | ||
LICENSE.txt | ||
README.md | ||
pom.xml |
README.md
SYSTEM :: ENTAXY :: BASIC AUTH :: HTPASSWD
Генерация htpasswd файла, сервис выдачи файла и checksum Работает с nginX шифрования MD5 и SHA-1
Описание данного подхода аутентификации:
- Nginx по умолчанию собран с модулем ngx_http_auth_basic_module, который проводит базовую аутентификацию через файлы htpasswd.
- Файл passwd периодически или по событиям синхронизируется между нодами при помощи скрипта синхронизации, который вызывает Rest сервис шины. (Rsync использовать нельзя, так как порты закрыты.)
- Аутентификация делается только на Nginx без доп. нагрузки на шину
- Файл хранится на сервере nginx и аутентификация будет работать всегда
- Подход рассчитан на балансировщики реализующие basic аутентификацию с использованием htpasswd
Сборка
Сборка осуществляется командой
mvn clean install
Файл конфигурации модуля ru.entaxy.esb.system.basic_auth.htpasswd.cfg хранится в SYSTEM :: ENTAXY :: Features
Сервис Htpasswd
Настраивается свойствами
htpasswd.service.host по умолчанию 0.0.0.0
htpasswd.service.port по умолчанию 9091
htpasswd.service.root.path по умолчанию /htpasswd
Методы:
GET http://localhost:9091/htpasswd - получение содержимого файла htpasswd
GET http://localhost:9091/htpasswd/checksum - получение checksum текущего htpasswd
Кластер:
Для избежания рассинхронизации файлов htpasswd на разных серверах требуется настроить шару между карафами и установить адрес этой папки в свойство
htpasswd.file.directory=/mnt/share
Скрипт сихронизации htpasswd для nginX
Расположен в папке resources/script/htpasswd-checker.sh
Запускается из любой папки расположенной на сервере.
Перед запуском проверить и при необходимости поправить переменные в скрипте
- KARAF_HOST_NAMES=("http://192.168.122.93:9091" "http://192.168.122.94:9091") - караф сервера с запущеным сервисом htpasswd
- HTPASSWD_STORAGE=/etc/nginx/htpasswd - адрес файла htpasswd, на который настроен nginX
- LOGFILE="htpasswd-sync.log" - адрес лог файла
Добавить запуск скрипта через cron sudo crontab -e
раз в минут
*/5 * * * * <path_to_script> >> <path_to_log_file> 2>&1
либо раз в минуту
*/1 * * * * <path_to_script> >> <path_to_log_file> 2>&1