Desenvolvedor de sinal OneSpan: ativar o HTTP Capture para aplicativo Java

Duo Liang, 28 de Novembro de 2018

Ao desenvolver com o OneSpan Sign no método SDK ou REST, especialmente ao depurar problemas, é recomendável usar ferramentas de monitoramento HTTP, como Fiddler ou Charles, para capturar seu tráfego de saída. Isso fornecerá clareza adicional sobre se sua solicitação foi enviada com sucesso ao OneSpan Sign e qual carga útil JSON seu aplicativo está enviando agora. Mas todos sabemos que, se você estiver desenvolvendo com Java, a JVM não lerá a configuração de proxy HTTP do seu sistema por padrão.

 

Usando o Fiddler como exemplo, demonstraremos neste blog como ativar esta ferramenta de depuração HTTP para seu aplicativo Java. Em seguida, tentaremos a abordagem para o Eclipse e o IntelliJ IDEA e obteremos a captura HTTP usando os métodos REST e SDK.

 

 

Nota

  • Se você já estiver usando um proxy, esse método não funcionará para você, porque você introduziria um segundo proxy no loop.

     

  • A configuração do proxy é configurada apenas para teste com o Fiddler. Quando estiver satisfeito com o teste, remova a configuração do proxy.

     

     

Etapa 1 - Pré-requisitos

 

Antes de começar, aqui estão alguns requisitos que você precisará seguir neste blog:

 

 

Etapa 2 - Configurar o Fiddler for JVM

 

Já existem alguns guias relacionados sobre como configurar o Fiddler for JVM. Analisaremos brevemente as etapas deste blog.

 

 

Como nossas solicitações de SDK / REST que enviam para o OneSpan Sign estão atrás do HTTPS, também precisamos configurar um certificado SSL para o Fiddler, que inclui as etapas abaixo.

 

 

1 Exportar certificado raiz do violinista

 

Clique em "Ferramentas" na barra de menus e escolha "Opções ..." para abrir a caixa de diálogo Opções do violinista. Alterne para a guia HTTPS, verifique se você marcou a opção "Descriptografar tráfego HTTPS" e clique no botão "Ações" e escolha "Exportar certificado raiz para a área de trabalho".28/11-1

2) Crie um keystore da JVM usando este certificado

(1) Abra a linha de comando como administrador.

 

 

(2) Localize a pasta bin do seu caminho JAVA_HOME usando os comandos abaixo

eco %JAVA_HOME %
cd {JAVA_HOME} \ bin

(3) Insira o comando abaixo:

 

 

keytools.exe -import -arquivo [localiza o arquivo exportado] -keystore [nome para keystre] -alias [nome alternativo para certificado]

(4) Digite e confirme uma senha e digite "y" para confiar neste certificado.11-28-2

(5) O arquivo FiddlerKeystore será gerado na pasta bin.11-28-3

 

 

3) Configure o proxy para sua JVM

 

Configure o Fiddler como seu proxy JVM (host local, porta 8888) e configure o Keystore que você acabou de criar como um Trust Store.

 

 

Você pode usar argumentos da VM para configurar seu Keystore como o Trust Store:

 

 

Como alternativa, você pode usar diretamente o código Java para definir propriedades do sistema:

 

 

System.setProperty ("https.proxyHost", "127.0.0.1");
System.setProperty ("https.proxyPort", "8888");
System.setProperty ("javax.net.ssl.trustStore", "C: \\ Arquivos de Programas \\ Java \\ jdk1.8.0_161 \\ bin \\ FiddlerKeystore");

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

11-28-4

 

Usaremos a API "Get Application Version" para testar nossa configuração:

 

 

Solicitação HTTP
POST / api / sysinfo
Cabeçalhos HTTP
Accept: application / json
Tipo de Conteúdo: application / json
Autorização: básica api_key
Carga útil da resposta
{
    "esquema": "16.11.3",
    "version": "16.11.4",
    "timestamp": "01-11-2017 15: 00 + 0000"
}

Este é o código REST usado para teste:

 

 

public void testWithREST () lança IOException {
		System.setProperty ("https.proxyHost", "127.0.0.1");
		System.setProperty ("https.proxyPort", "8888");
		System.setProperty ("javax.net.ssl.trustStore", "C: \\ Arquivos de Programas \\ Java \\ jdk1.8.0_161 \\ bin \\ FiddlerKeystore");
		System.setProperty ("javax.net.ssl.trustStorePassword", "violinista");

		Cliente de URL = novo URL (API_URL + "/ sysinfo");
		HttpURLConnection conn = (HttpURLConnection) client.openConnection ();
		conn.setRequestProperty ("Authorization", "Basic" + API_KEY);
		conn.setRequestProperty ("Accept", "application / json");

		((HttpURLConnection) conn) .getResponseCode ();
		experimentar {
			BufferedReader in = novo BufferedReader (novo InputStreamReader (conn.getInputStream ()));
			String inputLine;
			Resposta StringBuffer = new StringBuffer ();

			while ((inputLine = in.readLine ())! = nulo) {
				response.append (inputLine);
			}
			cercar();
			conn.disconnect ();

			System.out.println (response.toString ());
		} captura (exceção e) {
			e.printStackTrace ();
		}
	}

Este é o código SDK equivalente:

 

 

	public void testWithSDK () {
		System.setProperty ("javax.net.ssl.trustStore", "C: \\ Arquivos de Programas \\ Java \\ jdk1.8.0_161 \\ bin \\ FiddlerKeystore");
		System.setProperty ("javax.net.ssl.trustStorePassword", "violinista");

		ProxyConfiguration httpProxyConfiguration = ProxyConfigurationBuilder.newProxyConfiguration ()
				.withHttpHost ("127.0.0.1") // por exemplo localhost
				.withHttpPort (8888) // por exemplo, 8001
				.Construir();
		EslClient eslClient = novo EslClient (API_KEY, API_URL, httpProxyConfiguration);
		String applicationVersion = eslClient.getSystemService (). GetApplicationVersion ();
		System.out.println (applicationVersion);
	}

Observe que você também precisa configurar um objeto ProxyConfiguration com informações de host e porta do proxy. Essa configuração no SDK ajudará internamente você a chamar abaixo de duas linhas:

 

 

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

Portanto, você não precisa escrever explicitamente essas duas linhas nos argumentos da VM ou nas Propriedades do sistema.

 

 

Abaixo da captura de tela estão os resultados esperados que você pode ver no console IDE e no Fiddler.11-28-5

Até agora, habilitamos com êxito o Fiddler para seu aplicativo Java nos métodos SDK e REST no ambiente Windows e Linux, o que é extremamente útil quando você tenta diagnosticar problemas relacionados ao JSON e depurar solicitações Http.

 

 

Se você tiver alguma dúvida sobre este blog ou qualquer outra coisa relacionada à integração do OneSpan Sign ao seu aplicativo, visite o Fóruns da comunidade de desenvolvedores . Seu feedback é importante para nós!