No mostrar el dialog box / Pop-Up al utilizar autenticación de acceso básica en Nginx
Al configurar la autenticación de acceso básica en cualquier servidor web, este envía al navegador la cabecera “WWW-Authenticate”. Cuando esta es recibida por el navegador se nos muestra en pantalla un cuadro de dialogo / ventana emergente solicitando un usuario y contraseña para acceder.
WWW-Authenticate: Basic realm="Acceso restringido"
Si se desea evitar dicho cuadro de dialogo en el navegador pero no desactivar el requisito de autenticación, en el servidor web Nginx es fácil de configurar si se compiló Nginx con el modulo “more_clear_headers”.
Al no mostrar el típico cuadro de dialogo, el acceso normal por medio del navegador se complica, ya que el usuario no puede acreditarse. Esto hace necesario, por ejemplo, diseñar un formulario en algún lenguaje de programación web o bien utilizar un plugin en el navegador para tal fin. Lo importante es que las credenciales se ingresen de alguna manera ya que la autenticación no ha sido desactivada, solo ocultada.
Instalación / Manual del modulo hader_more: https://www.nginx.com/resources/wiki/modules/headers_more/
Configuración normal de “Basic access authentication” en Nginx.
location / { root /tmp/nginx/; auth_basic "Acceso restringido"; auth_basic_user_file /tmp/htpasswd; }
curl -I http://dominio HTTP/1.1 401 Unauthorized Server: openresty/1.9.3.1 Date: Mon, 26 Oct 2015 19:44:25 GMT Content-Type: text/html Content-Length: 200 Connection: keep-alive WWW-Authenticate: Basic realm="Acceso restringido" curl -I -u USUARIO:PASSWORD http://dominio HTTP/1.1 200 OK Server: openresty/1.9.3.1 Date: Mon, 26 Oct 2015 19:44:31 GMT Content-Type: text/html Content-Length: 5 Last-Modified: Mon, 26 Oct 2015 19:11:05 GMT Connection: keep-alive ETag: "562e7ac9-5" Accept-Ranges: bytes
Configuración evitando la ventana emergente de autenticación de acceso básica HTTP.
location / { root /tmp/nginx/; more_clear_headers 'WWW-Authenticate'; auth_basic "Acceso restringido"; auth_basic_user_file /tmp/htpasswd; }
curl -I http://dominio HTTP/1.1 401 Unauthorized Server: openresty/1.9.3.1 Date: Mon, 26 Oct 2015 19:45:26 GMT Content-Type: text/html Content-Length: 200 Connection: keep-alive curl -I -u USUARIO:PASSWORD http://192.168.178.115:8080/ HTTP/1.1 200 OK Server: openresty/1.9.3.1 Date: Mon, 26 Oct 2015 19:45:34 GMT Content-Type: text/html Content-Length: 5 Last-Modified: Mon, 26 Oct 2015 19:11:05 GMT Connection: keep-alive ETag: "562e7ac9-5" Accept-Ranges: bytes
NOTA: Hay otras alternativas como modificar el valor de la cabecera, pero depende del navegador esto puede no ser efectivo. Si se quiere utilizar una versión de Nginx con todos los Módulos activos de serie, se recomienda el uso de OpenResty.