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

79 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
* 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
```