Árvore de páginas

Matriz de Evolução

Versão/ReleaseFuncionalidade
12.1.27
  • Liberação da autenticação de serviços Rest com Json Web Token (JWT).
  • Disponibilizado a geração e validação do token JWT com base em um certificado incluso no produto.
12.1.29
  • Inclusão da parametrização (Propriedades JWT) para utilizar um certificado específico na validação do token JWT.

Atenção

O produto TOTVS Datasul disponibiliza a autenticação Json Web Token (JWT) para integração seguindo os padrões de mercado. Para integrações que utilizem de ferramentas APIs Gateways (ex:WSO2) é de responsabilidade dos provedores de tais ferramentas o suporte para esse tipo de configuração e uso.

Para o produto TOTVS Datasul, esse documento define o que é necessário para que a comunicação aconteça de forma adequada.

Premissas/Requisitos


  • Utilização do API Manager (WSO2).
  • Configuração API Manager para uso do token JWT 
    • O token deve conter o email do usuário, o mesmo do cadastro de usuário do produto.

Configuração


Utilização com API Manager WSO2


Com a API Manager previamente configurado, deve-se importar o certificado no cacert do "Java" no qual o servidor de aplicação foi inicializado, com o alias cadastrado em "Propriedades JWT" (apresentado posteriormente).

Os comando deve ser executado na estrutura de diretórios ../lib/security do Java correspondente.

Dica

Para localizar o Java que iniciou o Apache Tomcat (servidor de aplicação), basta localizar por "Java Home" no arquivo "catalina.YYYY-MM-DD.log".

Exemplo:

Java Home: c:\Program Files\java\jdk1.8.0_101\jre

O diretório onde estão os cerificados está em c:\Program Files\java\jdk1.8.0_101\jre\lib\security

OBS: O caminho pode mudar conforme a versão do java. 

Comandos para interação com o cacerts
# Verifica se existe o alias
keytool -v -list -alias "<ALIAS_CERTIFICADO>" -cacerts -storepass changeit

# Importação para o cacerts
keytool -v -import -noprompt -trustcacerts -alias "<ALIAS_CERTIFICADO>" -file <ARQUIVO_CERTIFICADO> -cacerts -storepass changeit

# Exclui o certificado do cacert
keytool -delete -noprompt -alias "<ALIAS_CERTIFICADO>" -cacerts -storepass changeit 

Utilização geração e validação "nativas" do produto Datasul 


A partir da release 12.1.27, o produto Datasul disponibiliza a geração do token JWT e sua validação no acesso aos endpoints. Para isto, basta que seja efetuado uma requisição ao endpoint http://<SERVIDOR>:<PORTA>/api/auth/accesstoken, passando como parâmetros a autenticação por "Basic Authentication" um usuário e senha de acesso ao produto Datasul. Caso seja um usuário válido e autorizado a entrar no produto, será retornado o token JWT.


Exemplo requisição via Postman com usuário interno

<USUARIO>: Código do usuário (Interno) do ERP Datasul

<SENHA>: Senha do usuário (Interno) do ERP Datasul


Exemplo requisição via Postman com usuário externo

<USUARIO>: Login do usuário de rede (Active Directory)

<DOMINIO>: Domínio de rede do usuário

<SENHA>: Senha do usuário da rede (Active Directory)

Obs: Para o usuário externo é necessário configurar o LDAP.


De posse a este token JWT (com prazo de utilização por 1 hora), é permitido o acesso as requisições onde o token gerado deve ser repassado com a Header de Authorization via "Bearer Token". 

Não é necessário efetuar o cadastro do alias para que seja realizada a validação por este cerificado (nativo no produto Datasul), porém a chave "Utilizar este Alias como default" (em versões superiores a 12.1.29, apresentado posteriormente) deve estar desativada.

Exemplo de acesso a endpoint com token JWT:

Importação de um certificado específico


A partir da release 12.1.29 da linha Datasul, foi disponibilizada uma tela (Propriedades JWT) para o cadastro dos "alias" específicos na resolução de um token JWT externo, onde o certificado deve estar previamente importado no cacerts (Java).

Para mais informações do local de parametrização está disponível em: https://tdn.totvs.com/pages/releaseview.action?pageId=580483346

Funcionamento


Abaixo temos como funciona o processo de autenticação com JWT:

  • Na primeira requisição no lado client, deverá ser solicitado o token JWT ao servidor, utilizando Basic Authentication com um usuário válido no produto.
  • Será retornado pelo servidor um token JWT, que deverá ser utilizados para as requisições subsequentes.
  • De posse do token JWT, você poderá acessar as APIs REST e demais funcionalidades do produto, utilizando a autenticação Bearer Token e informando o token JWT recebido.