2021-09-06 17:46:59 +03:00
|
|
|
|
# SYSTEM :: ENTAXY :: BASIC AUTH :: HTPASSWD
|
|
|
|
|
|
|
|
|
|
Генерация htpasswd файла, сервис выдачи файла и checksum
|
|
|
|
|
Работает с nginX шифрования MD5 и SHA-1
|
|
|
|
|
|
|
|
|
|
Описание данного подхода аутентификации:
|
|
|
|
|
1. Nginx по умолчанию собран с модулем
|
|
|
|
|
ngx_http_auth_basic_module, который проводит
|
|
|
|
|
базовую аутентификацию через файлы htpasswd.
|
|
|
|
|
2. Файл passwd периодически или по событиям
|
|
|
|
|
синхронизируется между нодами при помощи скрипта синхронизации,
|
|
|
|
|
который вызывает Rest сервис
|
|
|
|
|
шины. (Rsync использовать нельзя, так как порты
|
|
|
|
|
закрыты.)
|
|
|
|
|
3. Аутентификация делается только на Nginx без доп.
|
|
|
|
|
нагрузки на шину
|
|
|
|
|
4. Файл хранится на сервере nginx и аутентификация
|
|
|
|
|
будет работать всегда
|
|
|
|
|
5. Подход рассчитан на балансировщики реализующие 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
|
2022-02-28 15:20:38 +03:00
|
|
|
|
* LOGFILE="htpasswd-sync.log" - адрес лог файла
|
2021-09-06 17:46:59 +03:00
|
|
|
|
|
|
|
|
|
Добавить запуск скрипта через cron
|
|
|
|
|
sudo crontab -e
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
раз в минут
|
2022-02-28 15:20:38 +03:00
|
|
|
|
*/5 * * * * <path_to_script> >> <path_to_log_file> 2>&1
|
2021-09-06 17:46:59 +03:00
|
|
|
|
|
|
|
|
|
либо раз в минуту
|
2022-02-28 15:20:38 +03:00
|
|
|
|
*/1 * * * * <path_to_script> >> <path_to_log_file> 2>&1
|
2021-09-06 17:46:59 +03:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|