Páginas filhas
  • Configurar Portais e Webservices

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Para habilitar os WebServices é necessário que o Serviço HTTP esteja ativo. Este serviço permite que as informações sejam publicadas na WEB.
Assim, a configuração inicia-se habilitando o serviço HTTP e configurando a porta aos quais todos os outros serviços dependentes deste irão utilizar para a publicação das informações.

Observação: Os serviços devem ser configurados pelo WIZARD (SRVWIZARD), pois a cada módulo WEB instalado são descompactados arquivos importantes no diretório informado na configuração. Estes arquivos são de extensão exclusiva da Microsiga, os *.MZP, e que apenas com o Wizard será possível a correta instalação.


Aviso
titleAviso: Alteração de comportamento 1

Alteração efetiva a partir da LIB Label 20170208, com o font XmlWsCvs.prw de data igual ou superior a 29/03/2017, nas versões 11 e 12 do Protheus.

Para atender a orientação de mercado, os serviços SOAP do Protheus não retornam mais o stack completo de error.log.

Ao ocorrer um erro no sistema, é gerado um SoapFault 500, somente com a mensagem “Internal Server Error”. O envio do error.log pelo canal HTTP não será mais realizado.

O erro ainda poderá ser verificado no sistema através dos arquivos de log do appserver.exe.

Fonte: http://tdn.totvs.com/pages/viewpage.action?pageId=311632028

...

Aviso
titleAlteração de comportamento 2

A partir da release 12.1.31 do Protheus, a ser liberada em Abril de 2021, o comportamento padrão de autenticação de WebServices SOAP e REST será alterado. A partir desta versão, caso a chave Security não seja informada no arquivo appserver.ini, os serviços serão iniciados exigindo autenticação de usuário. Caso seja necessário trabalhar sem autenticação, a chave deverá ser configurada com o valor 0 (Exemplo: Security=0).

Informações
titleAutenticação

A partir da LIB 20201123 o WS SOAP do Protheus passa a trabalhar também com a autenticação do tipo BEARER. Para a geração do token, foi disponibilizado o serviço FWAuthentication, método token.


Expandir
titleExemplo
Bloco de código
languageactionscript3
themeRDark
titleSOAP - Bearer
#include "protheus.ch"

#define URL_BASE_SOAP "http://localhost:8080/ws/"

//-------------------------------------------------------------------
/*{Protheus.doc} soapBearer
Consumo de serviço SOAP do Protheus com autenticação bearer

WSINDEX.apw?cOp=02&WSVCNAME=FWAUTHENTICATION

@author Daniel Mendes
@since 07/10/2020
@version 1.0
*/
//-------------------------------------------------------------------
user function soapBearer()
local oWsdl as object
local oXml as object
local cSoapResponse as char
local cError as char
local cWarning as char

oWsdl := TWsdlManager():New()

//Geração do token
oWsdl:ParseURL(URL_BASE_SOAP + "FWAUTHENTICATION.apw?WSDL")
oWsdl:SetOperation("TOKEN")

oWsdl:SetValue(0, "password")
oWsdl:SetValue(3, "admin")
oWsdl:SetValue(4, "1")

oWsdl:SendSoapMsg()

cError := ""
cWarning := ""

cSoapResponse := oWsdl:GetSoapResponse()
oXml := XmlParser(cSoapResponse, "_", @cError, @cWarning )

FreeObj(oWsdl)
oWsdl := nil

//Atualização do token
oWsdl := TWsdlManager():New()

//Verifica o endereço, se existe algum serviço disponível e se existe o serviço que quero utilizar
oWsdl:ParseURL(URL_BASE_SOAP + "FWAUTHENTICATION.apw?WSDL")
oWsdl:SetOperation("TOKEN")

oWsdl:SetValue(0, "refresh_token")
oWsdl:SetValue(5, oXml:_SOAP_ENVELOPE:_SOAP_BODY:_TOKENRESPONSE:_TOKENRESULT:_REFRESH_TOKEN:Text)

oWsdl:SendSoapMsg()

FWFreeVar(@oXml)

cError := ""
cWarning := ""

cSoapResponse := oWsdl:GetSoapResponse()
oXml := XmlParser(cSoapResponse, "_", @cError, @cWarning )

FreeObj(oWsdl)
oWsdl := nil

//Consome um serviço autenticado
oWsdl := TWsdlManager():New()

oWsdl:ParseURL(URL_BASE_SOAP + "FWDICTIONARY.apw?WSDL")
oWsdl:SetOperation("GETTABLELIST")

oWsdl:AddHttpHeader("Authorization", "Bearer " + oXml:_SOAP_ENVELOPE:_SOAP_BODY:_TOKENRESPONSE:_TOKENRESULT:_ACCESS_TOKEN:Text)

oWsdl:SetValue(0, "SED")

oWsdl:SendSoapMsg()

ConOut("GetSoapResponse:", oWsdl:GetSoapResponse())

FreeObj(oWsdl)
oWsdl := nil

return


Para configurar, siga o procedimento abaixo:

- Portal do Cliente: http://suporte.totvs.com
- Menu Downloads e Atualizações
- Linha Protheus
- Microsiga Protheus Versão 11
- Todos
- Categoria: Arquivos de portais
- Baixe o arquivo ARQUIVOS DE PORTAIS

Obs.: se não estiverem aparecendo as versões, em "Filtros de pacotes" selecione "Todos pacotes disponíveis" e selecione a categoria novamente.

Para Protheus 12, clique aqui...
Section
bordertrue
Expandir
titlePara Protheus 11, clique aqui...
Expandir
title

- Primeiramente, baixe os Arquivos de portais no Portal do Cliente, e descompacte na pasta Systemload


- Portal do Cliente: http://suporte.totvs.com
 - Clique em Downloads
- Na opção Outras linhas de Produto selecione Protheus
- MICROSIGA PROTHEUS VERSÃO 12.1.XX (onde XX é a versão da sua release)
- Todos
- Categoria: Arquivos de portais
- Baixe o arquivo ARQUIVOS DE PORTAIS
Obs.: se não estiverem aparecendo as versões, em "Filtros de pacotes" selecione "Todos pacotes disponíveis" e selecione a categoria novamente.


...

- Após reiniciar o Application Server, para testar se o serviço dos Webservices iniciou corretamente, abra o endereço do WebService no navegador (Internet Explorer, que é o navegador homologado para Portais e Webservices), conforme exemplo: http://localhost:8079/ws





Configuração de segurança para um Webservice SOAP:

A chave abaixo deve ser incluída na seção do JOB de requisições:

SecurityIndica se a autenticação de requisição esta habilitada


Observação

O HTTP do SOAP verifica existência do campo Authorization no HEADER da requisição, porém a autorização é realizada pelo framework do produto que está utilizando o protocolo.
Somente é permitida autenticação do tipo Basic no webservice SOAP do Protheus. 

...

Bloco de código
[JOB_WS]
TYPE=WEBEX
ONSTART=__WSSTART
ONCONNECT=__WSCONNECT
SECURITY=1
Aviso
titleAlerta de risco

Fique atento ao utilizar o parâmetro de configuração com a chave Security=0, pois isso fará com que as integrações (APIs) não exijam autenticação, consequentemente dados do seu ambiente poderão ser consultados sem qualquer controle de autorização.