Pregunta

¿Hay alguna manera el uso de Java para pasar por encima de la caja de diálogo de autenticación del navegador cuando un mensaje 401 se recibe desde el servidor web? Quiero saber cuando se está visualizando este cuadro de diálogo, y en lugar de que sea entregado al usuario, que indique las credenciales para ellos.

Descripción general de aplicación:

i escribió el servidor web, por lo que básicamente quiero dejar que alguien abra un navegador externo y poner en el localhost y el puerto para acceder a los datos que se muestra. mi aplicación cuenta con un navegador web integrado vinculado a mi servidor por escrito. las pantallas del navegador descifrados contenido, por lo que si puedo forzar la autenticación (incluso para mi navegador integrado), un navegador externo necesitarían credenciales. si mi navegador integrado está tratando de acceder a los archivos, Puedo proporcionar las credenciales para el usuario y mostrar el contenido

¿Fue útil?

Solución 2

3.5M6 SWT tiene un nuevo oyente dentro de ella llamar AuthenticationListener. Simplemente se procese el evento de autenticación transcurrido desde el servidor y se disparó. El código siguiente es lo que realiza el comportamiento que quería. Se espera la autenticación, y si el anfitrión es mi solicitud, se pasa de nuevo las credenciales. Por supuesto rellenar el USER_NAME, contraseña y HOST_NAME con las variables apropiadas. De lo contrario, permite que el navegador de diálogo de autenticación emergente y hace que el usuario introduzca las credenciales. Este código también se puede encontrar en la página de fragmentos SWT de Eclipse:

webBrowser.addAuthenticationListener (nuevo AuthenticationListener ()

{

        public void authenticate(AuthenticationEvent event) {
            try {
                URL url = new URL(event.location);

                if (url.getHost().equals(HOST_NAME)) 
                {
                    event.user = USER_NAME;
                    event.password = PASSWORD;
                } 
                else 
                {       
                    /* do nothing, let default prompter run */
                }
            } catch (MalformedURLException e) {
                /* should not happen, let default prompter run */
            }
        }
    });

Otros consejos

Si no se preocupan por la contraseña que le muestra puede construir la URL por lo que pasa el ex credenciales. http: // nombre de usuario: password@www.example.com Esto por pasar el cuadro de autenticación pero se mostrará al usuario las credenciales de modo tampoco puede ser lo que buscas.

a su pregunta es un poco confuso. La autenticación básica entera se basa en cabeceras HTTP.

Si el navegador recibe una cabecera de autorización de lo que muestra el diálogo. El contenido del diálogo es entonces envía de vuelta al servidor. No hay nada especial en él. Se ISER nombre de usuario: contraseña en base64. Echar un vistazo a

Wikipedia

El problema es cómo desea intervenir. Usted tendría que capturar el encabezado de autorización y luego para la siguiente petición se tiene que modificar la cabecera HTTP para incluir las credenciales.

esperanza que ayuda

Creo que esto es sobre todo lo que informa el servidor al navegador navegador dependiente de comportamiento y.

Por ejemplo, Internet Explorer, al ser un producto de Microsoft, apoya directamente el envío automático de credenciales de Windows (se puede modificar este comportamiento en la configuración de Internet) después de una solicitud anónima falla en un 401.

Firefox, por ejemplo, no y siempre pedir al usuario incluso si se ha establecido para recordar el ID y la contraseña a través del administrador de contraseñas. Es decir, también le indicará si el acceso automático falla (como las credenciales de Windows todavía dan como resultado un 401 porque estás no se permite id).

No creo que, como desarrollador web, usted tiene mucho control sobre esto, además de la configuración del servidor y la aplicación para trabajar de la manera más esperado y armonioso ... si pudiera, esto podría entrar en negro territorio sombrero .

Si desea controlar lo que se muestra al usuario para la autenticación, puede cambiar el método de autenticación, en la sección de inicio de sesión-config del web.xml desde la básica hasta la forma.

A continuación, puede especificar qué página se debe mostrar cuando el usuario se autentica, y, supongo, antes de llenar las credenciales para ellos ... pero no lo hace de esta derrota el propósito entero de la seguridad?

Configuración de la autenticación para aplicaciones Web

Editar después de más detalles:

Mi única sugerencia sería cambiar el método de autenticación-a-CERT CLIENTE y requerir SSL de dos vías, donde también se requiere el cliente para presentar un certificado para el servidor. Si instala el certificado en el navegador incorporado (y asegúrese de navegadores externos no pueden obtener el certificado), entonces debería estar bien. Y en realidad esto debería detener cualquier diálogo de autenticación que se muestren.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top