Histórico da Página
O web service REST do AdvPL não utiliza as seções HTTP e WebServices utilizadas para o configurar o modelo SOAP.
Apesar disso o REST também utiliza working threads para atender as requisições recebedis recebidas também pelo protocolo HTTP.
Observações |
---|
O |
protocolo HTTP do REST não atende a outros tipos de requisições como o HTTP do SOAP (que também atende arquivos estáticos, APW e APL) |
Aviso |
---|
A chave MAXSTRINGSIZE é obrigatória na seção GENERAL com valor mínimo 10 para que o REST suporte requisições com mais de 1Mb |
Aviso | ||
---|---|---|
| ||
A partir da release 12.1.33 do Protheus, a ser liberada em Outubro 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). |
A função HTTP_START que prepara o Application Server como HTTP para REST, devendo ser configurada na seção ONSTART:
Sem Formato |
---|
[GENERAL] MAXSTRINGSIZE=10 [ONSTART] JOBS=HTTPJOB REFRESHRATE=120 [HTTPJOB] MAIN=HTTP_START ENVIRONMENT=environment |
Seção HTTPV11
...
Para habilitar o HTTP para REST criar a seção abaixo no appserver.ini:
Sem Formato |
---|
[HTTPV11] |
...
Enable=1 |
...
Sockets=HTTPREST |
Parâmetro | Descrição | Obrigatório |
---|---|---|
Enable | Indica se o HTTP esta habilitado | x |
Sockets | Seções com configuração de porta e URL (pelo menos uma seção) | x |
...
A chave Sockets referencia a(s) seção(ões) com a configuração de porta e URL que a mesma ira atender, permitindo que o Application Server seja configurado com mais de uma porta HTTP do REST:
Sem Formato |
---|
[HTTPV11] Enable=1 Sockets=HTTPREST,HTTPREST2 |
...
Seções Sockets
...
Exemplo de configuração de uma seção Sockets:
Sem Formato |
---|
[HTTPREST] |
...
Port=8080 |
...
IPsBind=
URIs=HTTPURI
Security=1 |
Parâmetro | Descrição | Obrigatório |
---|---|---|
Port | Porta HTTP | x |
IPsBind | Indica os IPs que serão atendidos por essa porta, se não informado atenderá qualquer IP / DNS associado ao servidor | |
URIs | Seções com configuração de URL e ambiente (pelo menos uma seção) | x |
Security | Indica se a autenticação de requisição esta habilitada | x |
Observação |
---|
O HTTP do REST verifica existência do campo Authorization no HEADER da requisição |
, porém a autorização é realizada pelo framework do produto que esta utilizando o protocolo |
...
Para facilitar o desenvolvimento e testes pode-se configurar a chave Security com valor 0 (zero) para desabilitar a autenticação |
A chave URIs referencia a(s) seção(ões) com a configuração da URL que a porta irá atender, permite também que seja configurado com mais de uma URL:
...
Sem Formato |
---|
[HTTPREST] Port=8080 IPsBind= URIs=HTTPURI,HTTPURI2 Security=1 |
Seções URIs
...
Exemplo de configuração de uma seção URIs:
Sem Formato |
---|
[HTTPURI] |
...
URL=/rest |
...
PrepareIn=
Instances=1,1
Public=classe/path/get1,classe2/path/gety,classe3/path/post
NoTenant=classe/path/get2,classe2/path/getv,classe3/path/post2 |
Parâmetro | Descrição | Obrigatório |
---|---|---|
URL | Indica o endereço que será atendido Nesse exemplo http://localhost:8080/rest |
...
x | ||
Preparein | Informações para preparação do ambiente das working threads | |
Instances | Configuração de inicialização de working threads | x |
Public | Chave pública que contém listas de EndPoints que não possuem autenticação | |
NoTenant | Ao ser usada não será validada as empresas/filiais, apenas a autenticação do usuário |
Observações |
---|
A preparação de ambiente da chave PrepareIn é realizada pelo framework do produto que esta utilizando o protocolo |
A chave Instances é configurada como no HTTP do SOAP |
. Documentação em Instances |
A chave Public precisa ser utilizada com muita cautela, visto que ela desliga a segurança do endpoint permitindo acesso a qualquer um que conheço o endereço |
Conexões TLS no AppServer
A partir da versão 17.3.0.20 do AppServer e LIB Label 20200727, o REST Server terá suporte ao TLS1.1 e TLS1.2.
Foi implementada também a versão TLS1.3 na lib do Protheus Label 20221128
Para que a configuração fique de acordo com o SSL já utilizado pelo binário, utilize o meio de configuração já existente.
No INI do REST, na Seção HTTPREST, adicione a chave a ser utilizada:
TLS1_0=1
TLS1_1=1
TLS1_2=1
TLS1_3=1
Valores válidos
Valor | Descrição |
0 (default) | Desabilita |
1 | Habilita |
Exemplo
[HTTPREST]
Port=8040
URIs=HTTPURI
SECURITY=1
SSL2=0
SSL3=1
TSL1_0=0
TSL1_1=1
TSL1_2=1
TSL1_3=1
A chave TLS1 foi mantida por compatibilidade, exemplo de utilização:
Valores válidos
Valor | Descrição |
---|---|
0 (default) | Desabilita |
1 | TLS 1.0 |
2 | TLS 1.1 |
3 | TLS 1.2 |
Exemplo
[HTTPREST]
Port=8040
URIs=HTTPURI
SECURITY=1
SSL2=0
SSL3=1
TLS1 = 3
Informações |
---|
A chave TLS1 está mantida em modo de compatibilidade. Isso significa que a atualização da aplicação irá funcionar adequadamente, porém esta chave deve ser substituída pelas novas versões TLS1_0, TLS1_1 e TLS1_2. Caso quaisquer das novas chaves do protocolo TLS sejam encontradas no arquivo de configuração, a aplicação não reconhecerá as informações contidas na TLS1. |
Aviso | ||
---|---|---|
| ||
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. |
Veja também
Seção [general], chave MaxStringSize