Se você acompanha o nosso blog, já deve ter visto que a partir da versão 4.13 do Magic xpi, o framework de provimento de webServices SOAP mudou,
saindo o SystInet e entrando o Apache Tomcat. (veja aqui).
Mais recentemente, publicamos como configurar os monitores do Magic xpi, (Magic Monitor e Magic SOAP Server Monitor) para acesso via HTTP/S. (veja aqui).
Agora, vamos ver como prover os serviços SOAP através do protocolo HTTP/S.
É muito simples.
Inicialmente, é necessário estar com o HotFix 4 do Magic xpi (4.13.4) ou maior.
Por padrão, os serviços SOAP do Magic xpi, 4.13 são publicado na porta 6060 via HTTP.
Precisaremos escolher outra porta, livre (sem uso), para publicar estes webServices via HTTP/S. Neste exemplo, vamos escolher a porta 5443.
Em seguida, precisamos de um certificado digital no formato PKCS12 (arquivo PFX). Caso não tenhamos um “oficial”, podemos gerar um autoassinado.
Pode ser exatamente o mesmo usado para configurar os acessos aos monitores do Magic xpi via HTTP/S, como mostrado na publicação anterior.
Mas vamos repetir o processo, só para melhor fixação.
Por exemplo, supondo que temos o Java instalado e sua pasta JDK definida na variável de ambiente JAVA_HOME, executamos este comando:
"%JAVA_HOME%\bin\keytool" -genkey -alias <alias> -keystore <novo arquivo .PFX> -storetype PKCS12 -keyalg RSA -storepass changeit -validity 730 -keysize 2048
Onde:
- <alias> = MagicBR
- <arquivo PFX> = TomcatXpiKeyStorePkcs12.pfx
e após responder algumas perguntas:
um novo certificado (arquivo .PFX) é gerado:
Na sequência, editamos o arquivo %XPI_HOME%\xpi_webserver\webservice-config\config.properties:
substituindo a chave “service.root.url” pela nova url HTTP/S, e adicionando as chaves “server.ssl.key-store“, “server.ssl.key-store-password“, “security.user.name” e “security.user.password” nele:
service.root.url=https://localhost:5443/services server.ssl.key-store=<caminho completo arquivo PFX do certificado> server.ssl.key-store-password=<senha do certificado> security.user.name=<usuário de logon no SOAP Monitor> security.user.password=<senha de logon no SOAP Monitor>
Com isso, quando o serviço Magic xpi 4.13 Soap Service é iniciado, podemos confirmar que ele estará aguardando conexões na porta 5443:
*Nota: Não se assuste. Esta porta pode não ser aberta, e não ser listada no Process Explorer, enquanto não houver ao menos um webservice publicado (WSDL) apontando para ela.
Alterando Serviços Antigos (publicados anteriormente)
Se você já tinha webServices SOAP criados anteriormente, antes desta reconfiguração, é necessário ajustar os WSDLs deles.
Isso porque os webServices se tornam disponíveis para acesso após a inicialização do Magic xpi 4.13 Soap Service, através do processamento automático (parse) de todos os WSDLs existentes (publicados).
Precisamos ir até a pasta %XPI_HOME%\xpi_webserver\webservice-config\wsdl e editar os arquivos que lá estiverem (com NotePad ou NotePad++), ajustando o nó “/definitions/service/port/soap:address” e alterando de http://…:6060… para: https://…:5443…
reiniciando o Magic xpi 4.13 Soap Service em seguida.
Criando Novos Serviços (publicando a partir de agora)
Os procedimentos de criação e publicação dos serviços permanecem inalterados.
Mas antes, vamos localizar e editar o arquivo %XPI_HOME%\Studio\MgxpiStudio.exe.config:
e adicionar nele a chave “/configuration/system.net/settings/servicePointManager“, antes de abrir o Magic xpi Studio:
<servicePointManager checkCertificateName="false" checkCertificateRevocationList="false" expect100Continue="false" />
Estas configurações vão ajudar o Magic xpi Studio a não reclamar do certificado autoassinado que estamos usando nas portas HTTP/S do Apache Tomcat.
Então, como de costume, começamos criando um recurso do tipo WS Server. Aqui, podemos usar tanto a porta HTTP:6443 ou HTTPS:8553, é indiferente. Pois este recurso é usando apenas pelo Studio para sua comunicação interna com o Apache Tomcat.
Funcionam as duas, mas como estamos falando de HTTP/S no post, vamos usar:
https://localhost:8553/webserviceprovider
Criamos um serviço com suas operações (métodos) e o vinculamos ao recurso:
e no momento de gerar e publicar este serviço:
podemos ver que a porta segura (HTTPS://…:5443…) é reconhecida.
Isso é por causa da edição feita anteriormente, no arquivo “%XPI_HOME%\xpi_webserver\webservice-config\config.properties” (service.root.url).
*Nota: Lembrando que são usadas duas portas TCP no processo todo: Ambiente padrão (HTTP): '6443' para publicar os WSDLs via xpi Studio e '6060' para prover os serviços Exemplo com HTTP/S: '8553' para publicar os WSDLs via xpi Studio e '5443' para prover os serviços
Testando (comprovando)
A melhor parte: ao consumirmos o serviço SOAP publicado pelo Magic xpi, podemos verificar que o acesso é feito através do canal seguro HTTP/S, pela porta 5443:
Tudo seguro agora 😎.
Fique ligado no Blog MagicBR, para mais dicas.
Para receber os artigos do Blog Magic Brasil em primeira mão no seu email, registre-se aqui