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

Cross Segmento - TOTVS Backoffice (Linha Protheus) - ADVPL - Autenticação REST/JSON do tipo Digest

No Protheus, não há suporte nativo para autenticação digest em requisições REST via ADVPL; apenas BASIC ou Token (JWT) são suportados. 

Para usar digest, é necessário montar manualmente o cabeçalho de autenticação, aplicando algoritmos de criptografia e codificando em Base64, conforme a documentação da API destino.

 

time.pngTempo aproximado para leitura:00:01:45 min

Dúvida
Como realizar a autenticação do tipo digest em comunicações REST/JSON via ADVPL?

Ambiente 
Cross Segmento - TOTVS Backoffice (Linha Protheus) - ADVPL - A partir da versão 12.23.10

Solução 
Atualmente, não há uma função, classe ou método nativo homologado no Protheus para realizar a autenticação do tipo DIGEST de forma automática em requisições REST. Para integrações REST, as opções suportadas nativamente pelo framework são a autenticação BASIC ou via Token (JWT).

Caso seja mandatório o uso da autenticação do tipo digest no endpoint de destino, será necessário desenvolver a montagem do cabeçalho de autenticação manualmente via código ADVPL. 

A autenticação digest normalmente exige o envio de informações como nonce, timestamp e senha, que são submetidas a um algoritmo de criptografia (como SHA) e posteriormente convertidas para Base64.
É necessário avaliar a documentação da API terceira (sistema destino) para confirmar quais informações são exigidas no payload e qual o algoritmo de criptografia adotado pelo servidor. 

Segue um exemplo utilizando a FWRETSrest em que, caso o destino exija a criptografia SHA256, a lógica estrutural da string no ADVPL seguiria o formato:

#INCLUDE "PROTHEUS.CH"
#INCLUDE "RESTFUL.CH"

User Function TstDgstR()
    Local oRest       := FWRest():New()
    Local aHeader     := {}
    Local cUrl        := "https://api.exemplo.com.br/v1/endpoint" //informar sua API de exemplo
    Local cUser       := "usuario_api"
    Local cPass       := "senha_api"
    Local cNonce      := "nonce_fornecido_pelo_servidor" 
    Local cStringAuth := ""
    Local cDigestHash := ""
    Local cResponse   := ""

    cStringAuth := cUser + cPass + cNonce
    cDigestHash := Encode64( SHA256( cStringAuth ) );/<------aqui ocorre a uitilização da criptografia
    aAdd( aHeader, "Authorization: Digest " + cDigestHash )// Temos a construção de header de exemplo
    aAdd( aHeader, "Content-Type: application/json" )

    oRest:SetPath( cUrl )
    If oRest:Get( aHeader )
        cResponse := oRest:GetResult()
        ConOut("Requisição realizada com sucesso: " + cResponse)
    Else
        ConOut("Erro na requisição REST. Detalhe: " + oRest:GetLastError())
    EndIf

Return .T.

Para viabilizar essa implementação customizada, utilize as funções de criptografia nativas disponibilizadas pela linguagem ADVPL para tratar a string antes do envio da requisição.
 

Saiba Mais
SHA256
Criptografia
FWRest

 

 

 

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 _