ngx_http_auth_request_module 与 HAProxy 等效

ngx_http_auth_request_module 与 HAProxy 等效

HAProxy 或 Apache是否存在与 nginx 等效的模块ngx_http_auth_request_module?此模块允许通过 HTTP 支持自定义身份验证。我引用一下:

ngx_http_auth_request_module模块(1.5.4+)根据子请求的结果实现客户端授权。如果子请求返回 2xx 响应代码,则允许访问。如果返回 401 或 403,则拒绝访问并返回相应的错误代码。子请求返回的任何其他响应代码均视为错误。

答案1

至少对于 apache(1.x 和 2.x),你可以尝试一下https://github.com/kitech/mod_authnz_external。它运行外部脚本来处理用户凭证。该脚本反过来可能会通过 HTTP[s] 查询外部服务,在这种情况下,它的工作原理与以下类似(不考虑性能问题):ngx_http_auth_request_module

答案2

你可以试试这个基于 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 }

作者还做了一个很好的博客文章,他详细解释了内部工作原理。

相关内容