Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmentos - TOTVS Backoffice (Linha Protheus) - ADVPL - Restringir acesso a API REST Protheus

É possível restringir o acesso a endpoints da API REST do Protheus;

Para APIs customizadas, usa-se o parâmetro cSecurity vinculando a API a uma rotina do sistema, controlando permissões pelo ERP. 

Para APIs padrão, utiliza-se o ponto de entrada LOADREST para habilitar apenas os serviços desejados, mantendo essenciais como TOKEN e HEALTHCHECK sempre ativos.

 

time.pngTempo aproximado para leitura: 00:02:00 min

Dúvida
É possível restringir o acesso a endpoints do API REST do Protheus?

Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) - REST - A partir da versão 12.2410.

Solução
Ao criar o usuário no Protheus, por padrão, ele terá acesso a todas as APIs do sistema. Para restringir e gerenciar esse acesso, a configuração depende do tipo de API que está sendo requisitada.

Para APIs customizadas: 
Você pode utilizar o parâmetro cSecurity. Caso informe o nome da rotina que possui relação com a API REST (por exemplo, MATA030 ou MATA410), esse nome será utilizado para a validação dos privilégios do usuário no sistema. Dessa forma, as permissões configuradas no ERP para aquela rotina determinarão se o acesso à API será permitido ou não.

 

Exemplo de código com uma API customizada com a rotina MATA030

#INCLUDE "protheus.ch"
#INCLUDE "restful.ch"

WSRESTFUL TstSecApi DESCRIPTION "API de Teste de Segurança" FORMAT "application/json" SECURITY "MATA030"

	WSMETHOD GET DESCRIPTION "Retorna dados protegidos" WSSYNTAX "/TstSecApi" PATH "/TstSecApi" PRODUCES application/json

END WSRESTFUL

WSMETHOD GET WSRECEIVE WSSERVICE TstSecApi
	Local lRet := .T.
	Local cJsonRet := ""

	cJsonRet := '{"status": "sucesso", "mensagem": "O usuario autenticado possui acesso a rotina MATA030 no Protheus!"}'

	::SetResponse(cJsonRet)

Return lRet


Para APIs padrões:
O ponto de entrada LOADREST é utilizado para habilitar e definir quais serviços do REST estarão disponíveis para requisição. Porém, o usuário padrão terá acessos as APIS disponíveis no sistema.
Esse ponto de entrada intercepta chamadas de serviços e é executado antes da inicialização do ambiente. 
Para utilizá-lo na restrição, deve-se efetuar o tratamento do retorno da função, validando o parâmetro cServiceName (nome da classe do serviço) para habilitar apenas os serviços que pretende disponibilizar. 

Atenção: Alguns serviços são essenciais para o funcionamento correto do sistema, sendo recomendado que permaneçam sempre habilitados: TOKEN, HEALTHCHECK, USERS, COMPANIES, BRANCHES, SYSTEMMODULES, LANGUAGE e BRAND.

Exemplo de código com LOADREST:

User Function LoadRest()
  Local cServiceName as character
  Local cList as character
  cServiceName := PARAMIXB[1]
  cList  := "FWJWT|HEALTHCARE"
 
Return (cServiceName $ cList )

Observação: 

  • Disponível a partir da LIB Label 20210809.
  • As APIs TLPP não passam por esse ponto de entrada.
  • O do ponto de entrada LOADREST pode causar o mau funcionamento ou bloqueio de rotinas Angular (PO-UI), pois ele intercepta chamadas de serviços REST (via Porta Multiprotocolo - MPP) essenciais para essas aplicações.
     

     

Saiba Mais
WSRESTFUL
TOTVS Backoffice Linha Protheus - ADVPL - REST com segurança
LOADREST - Ponto de entrada para habilitar os serviços do Rest
Configurar Privilégio para controlar acesso a rotinas

 

 

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _