Versões comparadas

Chave

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

...

Apesar disso o REST também utiliza working threads para atender as requisições recebidas também pelo protocolo HTTP.

Observações
O protocoloco 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
titleAlteração de comportamento

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).

Aviso
titleAlteração de comportamento

A partir da release 12.24.10 do Protheus, a ser liberada em Outubro de 2024, a chave Security não poderá ser alterada, ou seja, todos os serviços REST e SOAP precisarão trabalhar com autenticação.


A função HTTP_START que prepara o Application Server como HTTP para REST, devendo ser configurada na seção ONSTART:

...

Sem Formato
[HTTPV11]
Enable=1
Sockets=HTTPREST
ParametroParâmetroDescriçãoObrigatório
EnableIndica se o HTTP esta habilitadox
SocketsSeções com configuração de porta e URL (pelo menos uma seção)x

...

Sem Formato
[HTTPREST] 
Port=8080
IPsBind=
URIs=HTTPURI
Security=1
Public=classe/path/get1,classe2/path/gety,classe3/path/post
Notenant=classe/path/get2,classe2/path/getv,classe3/path/post2
NoTenant
ParâmetroParametroDescriçãoObrigatório
PortPorta HTTPx
IPsBindIndica os IPs que serão atendidos por essa porta, se não informado atenderá qualquer IP / DNS associado ao servidor
URIsSeções com configuração de URL e ambiente (pelo menos uma seção)x
SecurityIndica se a autenticação de requisição esta habilitadaxPublicChave pública que contém listas de EndPoints que não possuem autenticação
Ao ser usada não será validada as empresas/filiais, apenas a autenticação do usuário.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

...

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âmetroParametroDescriçãoObrigatório
URLIndica o endereço que será atendido
Nesse exemplo http://localhost:8080/rest
x
PrepareinInformações para preparação do ambiente das working threads
InstancesConfiguração de inicialização de working threadsx
PublicChave pública que contém listas de EndPoints que não possuem autenticação
NoTenantAo ser usada não será validada as empresas/filiais, apenas a autenticação do usuário
ObservaçõesObservaçoes
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
TLS1_0=0
TLS1_1=1
TLS1_2=1
TLS1_3=1



A chave TLS1 foi mantida por compatibilidade, exemplo de utilização:

Valores válidos

Valor

Descrição

0 (default)Desabilita
1TLS 1.0
2TLS 1.1
3TLS 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
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.

Informações

Os valores de OnStart, OnConnect e OnExit não precisam ser informados, essas informações já têm valores padrões controlados pelo Framrwork.




Veja também

Instances 

Seção OnStart -- 29403

...