proxyhost exclude example configurar code java proxy

java - exclude - Autenticación Proxy J2SE



proxy java example (4)

Usamos 2 Microsoft ISA Proxy Server 2003 SIMILARES para conectarnos a internet. Cada proxy tiene un estilo de inicio de sesión diferente, como se muestra a continuación:

Server-1: nt-domain / alan Server-2: [email protected]

Iniciar sesión en IE, Firefox y mi Phonecell a través de Wifi, todo está bien. Pero aparece un problema cuando ejecutamos una aplicación java J2SE Ver 4, 5 y 6, donde necesita autenticación de Internet. El inicio de sesión en el Servidor-2 es correcto, pero FALLA en el Servidor-2 (estilo: [email protected]).

Nota: Ambos proxy vistos utilizando la autenticación de Windows, escriba: negotiate NTLM

Appreceate si puedes ayudar o para cualquier sugerencia.

Gracias,

Alan L


¿Estás ejecutando una aplicación o un applet? Un applet puede aprovechar el mecanismo de autenticación proxy del navegador.

Yo sugeriría usar cURL para conectarse a través de su proxy primero, y ver el apretón de manos que ocurre. El servidor proxy ofrecerá al cliente una lista de métodos de autenticación.

Si el usuario y la contraseña son correctos, a veces puede simplemente sacar el encabezado de la sesión de su navegador y usarlo en su código. Por ejemplo, puedo agregar este encabezado a una solicitud, y el proxy me verá como autenticado:

Proxy-Authorization: Basic AbCdEfGhOjk==


Usando apache-commons httpClient (versión 3), tengo el siguiente código. No está bien probado (si es que lo es), pero creo que funcionó una vez ... :) Esto es en caso de que puedas modificar los programas ... si son paquetes de terceros, nada que puedas hacer.

String proxyHost = System.getProperty("https.proxyHost"); int proxyPort = 0; try { proxyPort = Integer.parseInt(System .getProperty("https.proxyPort")); } catch (Exception ex) { // }

System.setProperty("java.net.useSystemProxies", "true"); ProxySelector ps = ProxySelector.getDefault(); List<Proxy> proxyList = ps.select(new URI(targetUrl)); Proxy proxy = proxyList.get(0); if (proxy != null) { InetSocketAddress addr = ((InetSocketAddress) proxy .address()); if (addr != null) { proxyHost = addr.getHostName(); proxyPort = addr.getPort(); } } boolean useProxy = proxyHost != null && proxyHost.length() > 0; if (useProxy) { httpClient.getHostConfiguration().setProxy(proxyHost, proxyPort); }


Existen algunas buenas bibliotecas que pueden ayudarlo a superar este problema. Proxy Vole (Detección automática de proxy de red para Java) puede ayudarle a usar la misma configuración de proxy que Internet Explorer para autenticarse a través del proxy.

Para proporcionar conectividad de red de la caja para su aplicación Java, puede usar la biblioteca Proxy - Vole. Proporciona algunas estrategias para autodetectar la configuración de proxy actual. Hay muchas estrategias configurables para elegir. Por el momento, Proxy - Vole admite las siguientes estrategias de detección de proxy.

  • Configuración de la plataforma de lectura (Admite: Windows, KDE, Gnome)
  • Lea la configuración del navegador (Admite: Firefox 3.x, Internet Explorer)
  • Variables de entorno de lectura (variables de uso frecuente en sistemas de servidor Linux / Unix)
  • Secuencia de comandos de detección automática mediante WPAD / PAC (solo se admiten algunas características)

La documentación de Java describe cómo habilitar la autenticación NTLM en Java. Si tiene acceso a la fuente, puede agregar las propiedades del sistema de forma programática como se describe en el artículo "proxy" , agregando algo de la siguiente manera (consulte también la explicación de axis2):

System.setProperty("http.auth.ntlm.domain", mydomain);

Si no tiene acceso a la fuente, puede establecer propiedades en la línea de comando que inicia su binario Java, agregando algo como:

java -DproxyHost=host -DproxyPort=8080 -Dhttp.auth.ntlm.domain=mydomain ...