NGINX multiple authentication methods (one or the other) AND an IP check seems impossible

Gergő Vári varigergo07 at gmail.com
Sun May 26 08:17:06 UTC 2024


```
location / {
        proxy_pass $forward_auth_target;

        allow xxxxx/24;
        deny all;

        satisfy any; # This gets satisfied by the IP check, and auth is completely bypassed

        auth_basic "xxxx";
        auth_basic_user_file "/etc/nginx/basic_auth/$forward_auth_bypass";

        auth_request     /outpost.goauthentik.io/auth/nginx;
        error_page       401 = @goauthentik_proxy_signin;

        auth_request_set $auth_cookie $upstream_http_set_cookie;
        add_header       Set-Cookie $auth_cookie;
        proxy_set_header X-authentik-username $authentik_username;

        auth_request_set $authentik_username $upstream_http_x_authentik_username;
        auth_request_set $authentik_groups $upstream_http_x_authentik_groups;
        proxy_set_header X-authentik-groups $authentik_groups;

        auth_request_set $authentik_email $upstream_http_x_authentik_email;
        proxy_set_header X-authentik-email $authentik_email;

        auth_request_set $authentik_name $upstream_http_x_authentik_name;
        proxy_set_header X-authentik-name $authentik_name;

        auth_request_set $authentik_uid $upstream_http_x_authentik_uid;
        proxy_set_header X-authentik-uid $authentik_uid;

        auth_request_set $authentik_uid $upstream_http_x_authentik_uid;
        proxy_set_header X-authentik-uid $authentik_uid;

        auth_request_set $authentik_auth $upstream_http_authorization;
        proxy_set_header Authorization $authentik_auth;
}

location /outpost.goauthentik.io {
        proxy_pass              http://xxxx/outpost.goauthentik.io;
        proxy_set_header        Host $host;
        proxy_set_header        X-Original-URL $scheme://$http_host$request_uri;
        add_header              Set-Cookie $auth_cookie;
        auth_request_set        $auth_cookie $upstream_http_set_cookie;
        proxy_pass_request_body off;
        proxy_set_header        Content-Length "";
        proxy_ssl_verify off;
}

location @goauthentik_proxy_signin {
        internal;
        add_header Set-Cookie $auth_cookie;
        return 302 /outpost.goauthentik.io/start?rd=$request_uri;
}
```
The goal is to bypass SSO if a correct HTTP Basic Auth header is present while making sure connections are only from said IPs.

When I disable the IP check it works flawlessly. How could I separate these requirements?

So (SSO or Basic Auth) and Correct IP
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20240526/af314263/attachment.htm>


More information about the nginx mailing list