NGINX: ¿controlar el acceso a una ubicación con auth_basic y auth_ldap?

NGINX: ¿controlar el acceso a una ubicación con auth_basic y auth_ldap?

Estoy ejecutando NGINX 1.8.0 con nginx-auth-ldap. Tengo una aplicación ejecutándose /apppara auth_ldapautenticación/autorización. Funciona.

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

Me gustaría dar acceso a una botcuenta adicional para realizar algún mantenimiento automatizado (API web). No puedo crear una cuenta LDAP por botrazones de seguridad.

Intenté usar auth_ldapy simultáneamente auth_basic(con un solo botusuario para este último), pero cualquier credencial genera un 401. ¿Cometí un error o simplemente no es posible hacer que funcione de esta manera?

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

Si esto no funciona, ¿tendría alguna otra recomendación sobre cómo proceder?

Nota: Intenté duplicar la aplicación en auth_basicuna ubicación diferente. El control de acceso funciona, pero la aplicación codifica su URL: las respuestas /app-auth-basiccontienen enlaces a /app. No tengo control sobre la aplicación, por lo que esto no parece llevar a ninguna parte.

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
        ...
    }
}

Respuesta1

Estabas casi en lo cierto pero te faltaba la satisfydirectiva:

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

        ...
    }
}

Con esto, primero aparecerá un cuadro de diálogo de autenticación que dice "LDAP restringido" (que solo acepta credenciales LDAP). Si hace clic en cancelar, aparecerá otro cuadro de diálogo de autenticación que dice "Htaccess restringido" (que solo acepta usuarios/contraseñas que se encuentran en su archivo htaccess). Tenga en cuenta que el segundo cuadro de diálogo nunca aparece si ya ingresó las credenciales correctas en el primero.

Alternativamente, puede enviar las credenciales de htaccess directamente para ingresar.http://user:[email protected]

información relacionada