NGINX: контролировать доступ к местоположению с помощью auth_basic и auth_ldap?

NGINX: контролировать доступ к местоположению с помощью auth_basic и auth_ldap?

Я использую NGINX 1.8.0 с nginx-auth-ldap. У меня есть приложение, работающее на /appusing auth_ldapдля аутентификации/авторизации. Оно работает.

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

Я хотел бы предоставить доступ к дополнительной botучетной записи для выполнения некоторого автоматизированного обслуживания (веб-API). Я не могу создать учетную запись LDAP по botсоображениям безопасности.

Я пытался одновременно использовать auth_ldapи 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]

Связанный контент