NGINX:使用 auth_basic 和 auth_ldap 控制对某个位置的访问?

NGINX:使用 auth_basic 和 auth_ldap 控制对某个位置的访问?

我正在使用 nginx-auth-ldap 运行 NGINX 1.8.0。我有一个正在运行的应用程序/app用于auth_ldap身份验证/授权。有用。

server {
    listen 80;
    ...
    location /app/ {
        auth_ldap "Restricted";
        auth_ldap_servers test;
        ...
    }
}

我想授予额外bot帐户的访问权限来执行一些自动维护(Web API)。出于bot安全原因,我无法创建 LDAP 帐户。

我尝试同时使用auth_ldapand auth_basic(后者为单个bot用户),但任何凭据都会导致 401。我是否犯了一个错误,或者根本不可能让它以这种方式工作?

server {
    listen 80;
    ...
    location /app/ {
        auth_ldap "Restricted";
        auth_ldap_servers test;
        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/.htaccess
        ...
    }
}

如果这行不通,您有其他建议如何继续吗?

注意:我尝试在auth_basic不同的位置镜像该应用程序。访问控制有效,但应用程序对其 URL 进行硬编码:来自/app-auth-basic包含链接的响应返回到/app.我无法控制该应用程序,因此这似乎不会导致任何结果。

server {
    listen 80;
    ...
    location /app/ {
        auth_ldap "Restricted";
        auth_ldap_servers test;
        ...
    }
    location /app-auth-basic/ {
        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/.htaccess
        ...
    }
}

答案1

你几乎是正确的,但缺少satisfy指令:

server {
    listen 80;
    ...
    location /app/ {
        satisfy any;

        auth_ldap "Restricted LDAP";
        auth_ldap_servers test;

        auth_basic "Restricted htaccess";
        auth_basic_user_file /etc/nginx/.htaccess

        ...
    }
}

这样,您将首先看到一个身份验证对话框,其中显示“受限 LDAP”(仅接受 LDAP 凭据)。如果您单击“取消”,则会出现另一个身份验证对话框,提示您“受限 htaccess”(仅接受 htaccess 文件中的用户/密码)。请注意,如果您已在第一个对话框中输入了正确的凭据,则第二个对话框永远不会出现。

或者,您可以直接发送 htaccess 凭据以进入。http://user:[email protected]

相关内容