Développeur de signes OneSpan : Activez la capture HTTP pour l'application Java

Duo Liang, novembre 28, 2018

Lorsque vous développez avec OneSpan Sign dans la méthode SDK ou REST, en particulier lorsque vous débogez les problèmes, il est recommandé d'utiliser des outils de surveillance HTTP, tels que Fiddler ou Charles, pour capturer votre trafic sortant. Cela fournira une clarté supplémentaire quant à savoir si votre demande a été envoyée avec succès à OneSpan Sign et quelle charge utile JSON votre demande est maintenant l'envoi. Mais nous savons tous que si vous développez avec Java, JVM ne lira pas le paramètre proxy HTTP de votre système par défaut.

En utilisant Fiddler comme exemple, nous allons démontrer dans ce blog comment activer cet outil http Debug pour votre application Java. Ensuite, nous allons essayer l'approche pour Eclipse et IntelliJ IDEA et atteindre la capture HTTP en utilisant à la fois les méthodes REST et SDK.

Note

  • Si vous utilisez déjà un proxy, cette méthode ne fonctionnera pas pour vous parce que vous seriez l'introduction d'un deuxième proxy dans la boucle.

  • La configuration proxy n'est configurée que pour les tests avec Fiddler. Une fois que vous êtes satisfait de vos tests, vous pouvez supprimer la configuration proxy.

Étape 1 - Prérequis

Avant de commencer, voici quelques exigences que vous aurez besoin de suivre ce blog:

Étape 2 - Configurer Fiddler pour JVM

Il existe déjà quelques guides connexes sur la façon de configurer Fiddler pour JVM. Nous passerons brièvement en revue les étapes de ce blog.

Étant donné que nos demandes SDK/REST envoyées à OneSpan Sign sont derrière HTTPS, nous devons également configurer un certificat SSL pour Fiddler, qui comprend les étapes ci-dessous.

1. Certificat racine d'export Fiddler

Cliquez sur "Outils" dans la barre de menu et choisissez "Options..." pour ouvrir le dialogue D'options Fiddler. Passez à l'onglet HTTPS, assurez-vous d'avoir vérifié l'option « Décrypter le trafic HTTPS » et cliquez sur le bouton « Actions » et choisissez « Certificat racine d'exportation vers le bureau ».11-28-1

2. Créez un JVM Keystore à l'aide de ce certificat

(1) Ouvrez la ligne de commande en tant qu'administrateur.

(2) Localiser le dossier de bac de votre chemin de JAVA_HOME en utilisant les commandes ci-dessous

écho %JAVA_HOME%
cd 'JAVA_HOME'bin

(3) Entrée ci-dessous commande:

keytool.exe -import -file [path the exported file] -keystore [nom pour keystre] -alias [alias nom pour certificat]

(4) Entrez et confirmez un mot de passe, puis entrez « y » pour faire confiance à ce certificat.11-28-2

(5) Le fichier FiddlerKeystore sera généré sous le dossier bin.11-28-3

3. Configurer proxy pour votre JVM

Configurez Fiddler comme votre proxy JVM (localhost, port 8888) et configurez le Keystore que vous venez de créer en tant que Trust Store.

Vous pouvez soit utiliser des arguments VM pour configurer votre Keystore comme le Trust Store :

-DproxySet-vrai
-DproxyHost 127,0,0,1
-DproxyPort 8888
-Djavax.net.ssl.trustStore"\to\fiddlerkeystore>
-Djavax.net.ssl.trustStorePassword"
\to\fiddlerkeystore>

Alternativement, vous pouvez utiliser directement le code Java pour définir les propriétés du système :

 
System.setProperty ("https.proxyHost", "127.0.0.1");
System.setProperty ("https.proxyPort", "8888");
System.setProperty("javax.net.ssl.trustStore", "C: 'Program Files''jdk1.8.0 '161'bin'FiddlerKeystore");

System.setProperty ("javax.net.ssl.trustStorePassword", "fiddler");

11-28-4

Étape 3 - Test avec code

Nous utiliserons l'API " Get Application Version " pour tester notre configuration :

Demande HTTP
POST /api/sysinfo
En-têtes HTTP
Accepter : application/json
Content-type: application/JSON
Autorisation: api_key de base
Charge utile de réponse
{
    "schéma": "16.11.3",
    "version": "16.11.4",
    "timetamp": "2017-11-01 15:0000"
}

Il s'agit du code REST utilisé pour le test :

test de vide publicWithREST() lance IOException (fr)
		System.setProperty ("https.proxyHost", "127.0.0.1");
		System.setProperty ("https.proxyPort", "8888");
		System.setProperty("javax.net.ssl.trustStore", "C: 'Program Files''jdk1.8.0 '161'bin'FiddlerKeystore");
		System.setProperty ("javax.net.ssl.trustStorePassword", "fiddler");

		Client URL ' nouvelle URL (API_URL '/sysinfo');
		httpURLConnection conn (httpURLConnection) client.openConnection();
		conn.setRequestProperty ("Autorisation", "Basic" - API_KEY);
		conn.setRequestProperty ("Accept", "application/json");

		((HttpURLConnection) conn).getResponseCode();
		essayer  {
			BufferedReader dans le nouveau BufferedReader (nouveau InputStreamReader(conn.getInputStream());
			Ligne d'entrée de chaîne ;
			Réponse StringBuffer - nouveau StringBuffer();

			tandis que ((inline - in.readLine()) !
				response.append (inputLine);
			}
			in.close();
			conn.disconnect();

			System.out.println (response.toString));
		- capture (Exception e)
			e.printStackTrace();
		}
	}

Il s'agit du code SDK équivalent :

	test de vide publicWithSDK()
		System.setProperty("javax.net.ssl.trustStore", "C: 'Program Files''jdk1.8.0 '161'bin'FiddlerKeystore");
		System.setProperty ("javax.net.ssl.trustStorePassword", "fiddler");

		ProxyConfiguration httpProxyConfiguration - ProxyConfigurationBuilder.newProxyConfiguration()
				.withHttpHost ("127.0.0.1") // par exemple localhost
				.avecHttpPort(8888) // p. ex. 8001
				.construire();
		EslClient eslClient - nouveau EslClient (API_KEY, API_URL, httpProxyConfiguration);
		Application de chaîneVersion - eslClient.getSystemService().getApplicationVersion();
		System.out.println (applicationVersion);
	}

Pour noter, vous devez en outre configurer un objet ProxyConfigure avec l'hôte proxy et les informations de port. Cette configuration dans SDK vous aidera en interne à appeler en dessous de deux lignes :

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

Par conséquent, vous n'avez pas besoin d'écrire explicitement ces deux lignes dans vos arguments De VM ou propriétés système.

Ci-dessous capture d'écran est les résultats attendus que vous pouvez voir à partir de votre console IDE et Fiddler.11-28-5

À ce jour, nous avons activé Fiddler pour votre application Java dans la méthode SDK et REST sous Windows et Linux environnement, ce qui est extrêmement utile lorsque vous essayez de diagnostiquer les problèmes liés à JSON et de déboguer les demandes http.

Si vous avez des questions concernant ce blog ou toute autre chose concernant l'intégration de OneSpan Sign dans votre application, visitez les Forums communautairesdes développeurs . Vos commentaires sont importants pour nous!