Эквивалентность ngx_http_auth_request_module для HAProxy
Есть ли эквивалентный модуль для nginx ngx_http_auth_request_module
существуют для HAProxy или Apache? Этот модуль позволяет поддерживать пользовательскую аутентификацию через HTTP. Я цитирую:
ngx_http_auth_request_module
Модуль (1.5.4+) реализует авторизацию клиента на основе результата подзапроса. Если подзапрос возвращает код ответа 2xx, доступ разрешен. Если он возвращает 401 или 403, доступ запрещается с соответствующим кодом ошибки. Любой другой код ответа, возвращенный подзапросом, считается ошибкой.
2 ответа
По крайней мере, для Apache (1.x и 2.x) вы можете попробовать https://github.com/kitech/mod_authnz_external. Он запускает внешний скрипт для обработки учетных данных пользователя. Этот скрипт, в свою очередь, может запрашивать внешнюю службу по HTTP[s], в этом случае он будет работать аналогично (без учета проблем с производительностью) для ngx_http_auth_request_module
Вы можете попробовать это решение на основе Lua. Это вдохновлено ngx_http_auth_request_module
,
Загрузите скрипт lua в global
раздел.
global
lua-load /usr/share/haproxy/auth-request.lua
Определите аутентификационный бэкэнд
backend auth_request
mode http
server auth_request 127.0.0.1:8080 check
Вызовите Lua, проверьте интерфейс и отклоните запрос, если он не прошел.
frontend http
http-request lua.auth-request auth_request /is-allowed
http-request deny if ! { var(txn.auth_response_successful) -m bool }
Автор также сделал хороший пост в блоге, где он подробно объяснил внутреннюю работу.