Эквивалентность 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 }

Автор также сделал хороший пост в блоге, где он подробно объяснил внутреннюю работу.

Другие вопросы по тегам