Notícias

Utilizar serviços Web sob https e/ou autenticação

Como utilizar um serviço Web sob https? Como empregar um serviço com autenticação? São processos complicados?

O movimento dos GXtips segue seu curso. Conselhos claros e práticos que simplificam as tarefas na hora de trabalhar. Nesta oportunidade, Gonzalo Cuiñas, integrante da Equipe de Suporte da Artech, explica quais são os passos necessários para abranger um serviço Web sob autenticação.  

Construir um serviço Web sob https ou autenticação pode parecer um pouco complicado quando na realidade não é. Basicamente, gerar um Web service sob https implica 3 passos fundamentais:

• Consumir o wsdl que se encontra sob https
• Guardar o certificado do servidor em um keystore
• Arquitetar o Web service indicando à aplicação onde está o keystore com o certificado.

Consumindo o wsdl

No caso de serviços sob https, é necessário obter o wsdl como arquivo para depois inspecioná-lo com o WSDL Inspector de maneira local e utilizando o protocolo file. Uma maneira de obter o wsdl é acessando o mesmo mediante o browser, para depois fazer um “Save as” da página. Uma vez inspecionado o serviço já é possível programar o conteúdo do web service como se faz normalmente. A única condição é que será necessário criar uma variável do tipo Location para indicar que o web service está sob https, por exemplo:

&location = getlocation("org_tempuriaction__wssuma")
&location.port = 8443
&location.secure = 1
&suma = &ws.execute(5, 3)

Guardando o certificado do servidor em um keystore

É imprescindível esclarecer que para poder existir uma comunicação com recurso sob https é necessário ter instalado o certificado do servidor com o qual desejamos nos comunicar. Este certificado contém (entre outras coisas) a chave pública com a qual é codificada a informação enviada e que só o servidor sabe decodificar com sua chave privada (mais informação aquí). Portanto, na hora de consumir um serviço sob https precisaremos do certificado do servidor para poder estabelecer a comunicação.

Uma vez obtido o certificado devemos guardá-lo em um keystore, que basicamente é um “armazém de certificados” que nos permite adicionar novos certificados ou eliminá-los (entre outras coisas). Uma maneira de manipular/administrar estes keystores é mediante a ferramenta “Keytool.exe” que traz o JDK.

Indicando a localização do keystore na aplicação Java

Resta indicar à aplicação a localização do keystore, para que na hora de estabelecer a comunicação ele saiba de onde tomar o certificado. Para isto é preciso configurar as “system properties”: javax.net.ssl.trustStore e  javax.net.ssl.trustStorePassword. O que se costuma fazer é acrescentar essas propriedades na instância da máquina virtual, o que pode ser feito nas Interpreter Options do GX.

Caso contrário, ela pode ser configurada por código, adicionando as seguintes linhas na rotina que consome o serviço (ou em qualquer outra parte da aplicação que se execute antes de consumir o serviço):

Java System.setProperty("javax.net.ssl.trustStore", "C:\MiKeystore");
Java System.setProperty("javax.net.ssl.trustStorePassword", "MiPassword");

Para ler o documento completo, onde é descrito como trabalhar com a Web services autenticada, clique aquí.