Estoy ejecutando NGINX 1.8.0 con nginx-auth-ldap. Tengo una aplicación ejecutándose /app
para auth_ldap
autenticación/autorización. Funciona.
server {
listen 80;
...
location /app/ {
auth_ldap "Restricted";
auth_ldap_servers test;
...
}
}
Me gustaría dar acceso a una bot
cuenta adicional para realizar algún mantenimiento automatizado (API web). No puedo crear una cuenta LDAP por bot
razones de seguridad.
Intenté usar auth_ldap
y simultáneamente auth_basic
(con un solo bot
usuario 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_basic
una ubicación diferente. El control de acceso funciona, pero la aplicación codifica su URL: las respuestas /app-auth-basic
contienen 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 satisfy
directiva:
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]