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 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) |
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
Alteraçã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).
A função HTTP_START que prepara o Application Server como HTTP para REST, devendo ser configurada na seção ONSTART:
[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:
[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:
[HTTPV11] Enable=1 Sockets=HTTPREST,HTTPREST2
Seções Sockets
Exemplo de configuração de uma seção Sockets:
[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:
[HTTPREST] Port=8080 IPsBind= URIs=HTTPURI,HTTPURI2 Security=1
Seções URIs
Exemplo de configuração de uma seção URIs:
[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 |
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.
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
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
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
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.