User Tools

Site Tools


basic_access_authentication_sin_pop-up_en_nginx

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.

basic_access_authentication_sin_pop-up_en_nginx.txt · Last modified: 2020/12/25 22:57 by 127.0.0.1