OneSpan Sign Developer: Habilitar la captura HTTP para la aplicación Java

Duo Liang, 28 de Noviembre de 2018

Cuando se desarrolla con OneSpan Sign en el SDK o en el método REST, especialmente cuando se depuran problemas, se recomienda utilizar herramientas de monitorización HTTP, como Fiddler o Charles, para capturar el tráfico saliente. Esto proporcionará claridad adicional en cuanto a si su solicitud fue enviada con éxito a OneSpan Sign y qué carga útil JSON está enviando ahora su aplicación. Pero todos sabemos que si estás desarrollando con Java, JVM no leerá la configuración del proxy HTTP de tu sistema por defecto.

Usando Fiddler como ejemplo, demostraremos en este blog cómo habilitar esta herramienta de depuración HTTP para su aplicación Java. A continuación, probaremos el enfoque tanto para Eclipse como para IntelliJ IDEA y lograremos la captura HTTP utilizando tanto el método REST como el SDK.

Nota

  • Si ya estás usando un proxy, este método no te funcionará porque estarías introduciendo un segundo proxy en el bucle.
  • La configuración del proxy sólo se establece para probar con Fiddler. Una vez que esté satisfecho con sus pruebas, puede eliminar la configuración del proxy.

Paso 1 - Requisitos previos

Antes de empezar, aquí hay algunos requisitos que necesitarás para seguir este blog:

Paso 2 - Configurar Fiddler para JVM

Ya hay algunas guías relacionadas sobre cómo configurar Fiddler para JVM. Repasaremos brevemente los pasos en este blog.

Dado que nuestras solicitudes SDK/REST que se envían a OneSpan Sign están detrás de HTTPS, también necesitamos configurar un certificado SSL para Fiddler, que incluye los siguientes pasos.

1. Exportar el certificado raíz de Fiddler

Haga clic en "Herramientas" en la barra de menú y elija "Opciones..." para abrir el cuadro de diálogo Opciones de Fiddler. Cambie a la pestaña HTTPS, asegúrese de haber marcado la opción "Desencriptar el tráfico HTTPS" y haga clic en el botón "Acciones" y elija "Exportar certificado raíz al escritorio".11-28-1

2. Crear un almacén de claves JVM utilizando este certificado

(1) Abra la línea de comandos como administrador.

(2) Localice la carpeta bin de su ruta JAVA_HOME utilizando los siguientes comandos

echo %JAVA_HOME% cd {JAVA_HOME}\Nde la página web

(3) Introduzca el siguiente comando:

keytool.exe -import -file [ruta del archivo exportado] -keystore [nombre del keystre] -alias [nombre del alias del certificado]

(4) Introduzca y confirme una contraseña y luego introduzca "y" para confiar en este certificado.11-28-2

(5) El archivo FiddlerKeystore se generará en la carpeta bin.11-28-3

3. Configurar el proxy para su JVM

Configure Fiddler como su proxy JVM (localhost, puerto 8888) y establezca el almacén de claves que acaba de crear como almacén de confianza.

Puede utilizar argumentos VM para configurar su almacén de claves como almacén de confianza:

-DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=8888 -Djavax.net.ssl.trustStore="" -Djavax.net.ssl.trustStorePassword="" \to\fiddlerkeystore>

Como alternativa, puede utilizar directamente el código Java para establecer las propiedades del sistema:

System.setProperty("https.proxyHost", "127.0.0.1"); System.setProperty("https.proxyPort", "8888"); System.setProperty("javax.net.ssl.trustStore", "C:\Narchivos de programa\NJava\Njdk1.8.0_161\bin\NFiddlerKeystore"); System.setProperty("javax.net.ssl.trustStorePassword", "fiddler");

11-28-4

Paso 3 - Prueba con código

Utilizaremos la API "Get Application Version" para probar nuestra configuración:

HTTP Request POST /api/sysinfo HTTP Headers Accept: application/json Content-Type: application/json Authorization: Basic api_key Response Payload { "schema": "16.11.3", "version": "16.11.4", "timestamp": "2017-11-01 15:00+0000" }

Este es el código REST utilizado para la prueba:

public void testWithREST() throws IOException { System.setProperty("https.proxyHost", "127.0.0.1"); System.setProperty("https.proxyPort", "8888"); System.setProperty("javax.net.ssl.trustStore", "C:\\Program Files\\Java\\jdk1.8.0_161\\bin\\FiddlerKeystore"); System.setProperty("javax.net.ssl.trustStorePassword", "fiddler"); URL client = new URL(API_URL + "/sysinfo"); HttpURLConnection conn = (HttpURLConnection) client.openConnection(); conn.setRequestProperty("Authorization", "Basic " + API_KEY); conn.setRequestProperty("Accept", "application/json"); ((HttpURLConnection) conn).getResponseCode(); try { BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); conn.disconnect(); System.out.println(response.toString()); } catch (Exception e) { e.printStackTrace(); } }

Este es el código equivalente del SDK:

	public void testWithSDK() { System.setProperty("javax.net.ssl.trustStore", "C:\\Program Files\\Java\\jdk1.8.0_161\\bin\\FiddlerKeystore"); System.setProperty("javax.net.ssl.trustStorePassword", "fiddler"); ProxyConfiguration httpProxyConfiguration = ProxyConfigurationBuilder.newProxyConfiguration() .withHttpHost("127.0.0.1") // e.g. localhost .withHttpPort(8888) // e.g. 8001 .build(); EslClient eslClient = new EslClient(API_KEY, API_URL, httpProxyConfiguration); String applicationVersion = eslClient.getSystemService().getApplicationVersion(); System.out.println(applicationVersion); }

Para ello, es necesario configurar adicionalmente un objeto ProxyConfiguration con la información del host y el puerto del proxy. Esta configuración en el SDK le ayudará internamente a llamar a las dos líneas siguientes:

System.setProperty("https.proxyHost", "127.0.0.1"); System.setProperty("https.proxyPort", "8888");

Por lo tanto, no es necesario escribir explícitamente estas dos líneas en los argumentos de su VM o en las Propiedades del Sistema.

La siguiente captura de pantalla es el resultado esperado que puedes ver desde la consola de tu IDE y Fiddler.11-28-5

Por ahora, hemos habilitado con éxito Fiddler para su aplicación Java tanto en el SDK como en el método REST bajo el entorno Windows y Linux, lo que es extremadamente útil cuando se trata de diagnosticar problemas relacionados con JSON y depurar las solicitudes Http.

Si tiene alguna pregunta sobre este blog o cualquier otra cosa relacionada con la integración de OneSpan Sign en su aplicación, visite los foros de la comunidad de desarrolladores. Su opinión nos importa

 

 

Popup default