entaxy-public/system/auth/basic-auth/htpasswd/README.md

78 lines
3.1 KiB
Markdown
Raw Normal View History

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
Добавить запуск скрипта через cron
sudo crontab -e
```
раз в минут
*/5 * * * * <path_to_script>
либо раз в минуту
*/1 * * * * <path_to_script>
```