Mi aplicación web tiene una página de inicio de sesión que envía credenciales de autenticación a través de una llamada AJAX. Si el usuario ingresa el nombre de usuario y la contraseña correctos, todo está bien, pero si no, sucede lo siguiente:
- El servidor web determina que, aunque la solicitud incluía un encabezado de autorización bien formado, las credenciales en el encabezado no se autentican correctamente.
- El servidor web devuelve un código de estado 401 e incluye uno o más encabezados WWW-Authenticate que enumeran los tipos de autenticación admitidos.
- El navegador detecta que la respuesta a mi llamada en el objeto XMLHttpRequest es un 401 y la respuesta incluye encabezados WWW-Authenticate. A continuación, aparece un cuadro de diálogo de autenticación que solicita, nuevamente, el nombre de usuario y la contraseña.
Todo esto está bien hasta el paso 3. No quiero que aparezca el diálogo, quiero manejar la respuesta 401 en mi función de devolución de llamada AJAX. (Por ejemplo, mostrando un mensaje de error en la página de inicio de sesión). Quiero que el usuario vuelva a ingresar su nombre de usuario y contraseña, por supuesto, pero quiero que vean mi formulario de inicio de sesión amigable y tranquilizador, no el feo y predeterminado del navegador. diálogo de autenticación.
Por cierto, no tengo control sobre el servidor, por lo que no es una opción hacer que devuelva un código de estado personalizado (es decir, algo que no sea 401).
¿Hay alguna forma de que pueda suprimir el diálogo de autenticación? En particular, ¿puedo suprimir el cuadro de diálogo Se requiere autenticación en Firefox 2 o posterior? ¿Hay alguna forma de suprimir el cuadro de diálogo Conectar a [host] en IE 6 y versiones posteriores?
Editar
Información adicional del autor (18 de septiembre):
Debo agregar que el problema real con la aparición del cuadro de diálogo de autenticación del navegador es que no brinda información suficiente al usuario.
El usuario acaba de ingresar un nombre de usuario y contraseña a través del formulario en la página de inicio de sesión, cree que los ha escrito correctamente y ha hecho clic en el botón enviar o presionar enter. Su expectativa es que lo llevarán a la página siguiente o tal vez le digan que ha ingresado su información de manera incorrecta y debe intentarlo nuevamente. Sin embargo, en su lugar se le presenta un cuadro de diálogo inesperado.
El cuadro de diálogo hace ningún reconocimiento del hecho de que sólo hizo ingresar un nombre de usuario y contraseña. No indica claramente que hubo un problema y que debería intentarlo de nuevo. En cambio, el cuadro de diálogo presenta al usuario información críptica como "El sitio dice: ' [reino] '". Donde [reino] es un nombre de reino corto que solo un programador podría amar.
Los diseñadores de Web broswer toman nota: nadie preguntaría cómo suprimir el diálogo de autenticación si el diálogo en sí fuera simplemente más fácil de usar. La única razón por la que estoy haciendo un formulario de inicio de sesión es que nuestro equipo de administración de productos considera con razón que los diálogos de autenticación de los navegadores son horribles.