我可以在 nginx 中 auth_request 返回后比较 auth_request_set 设置的变量吗?

我可以在 nginx 中 auth_request 返回后比较 auth_request_set 设置的变量吗?

我有一个auth_request像这样的位置块

location /somepath {
    auth_request /authorize;
    auth_request_set $header_variable $upstream_http_custom_header;

    proxy_path http://backendaddress;
}

我想要做的是,如果$header_variable不匹配特定的正则表达式,我想要返回 403 代码。

if无法运行,因为它运行得太早了。还有其他方法可以让我做到这一点吗?

答案1

Nginx 模块授权请求等待来自后端的 200 或 401/403 HTTP 代码:

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

您的请求有一个需要检查权限的标头:

我想要做的是,如果 $header_variable 与特定的正则表达式不匹配,我想要返回 403 代码。

在身份验证请求/响应周期中,您的后端需要检查标头并返回 403 代码,以防止下一次请求在未进行身份验证的情况下发生。模块授权请求作为一个简单的测试断言,它返回其中一个代码。它确实意味着负责此 URL 的后端进程会回复http://后端地址/授权需要对所需标题进行额外检查。

相关内容