Atenção
Esta página foi revisada para considerar as configurações do TOTVS Fluig Plataforma a partir da atualização 1.6.5 - Liquid.
Índice
Objetivo
Existem algumas situações em que as páginas públicas precisam acessar informações disponíveis na plataforma para interagir com o cliente.
Este guia tem o objetivo de apresentar uma técnica segura para liberar o acesso às informações disponíveis no TOTVS Fluig Plataforma sem requisitar autenticação.
Introdução
Alguns parceiros e clientes utilizam o OAuth para realizar as chamadas nas APIs, no entanto a chave fica localizada dentro da página. Essa técnica não é recomendada, pois um atacante pode se apossar da chave que está publicamente acessível e obter acesso irrestrito ao dados.
Para evitar essa situação, foi criada uma técnica que se baseia em duas etapas:
- Na instalação de um componente ou aplicativo da Store serão criadas chaves através da classe activator configurada. Para a criação das chaves de autenticação deve ser definido um código que obedece ao padrão de 4 pares de 4 caracteres: XXXX-XXXX-XXXX-XXXX.
- Esse código será usado posteriormente para buscar os tokens que serão usados na autenticação. Essa etapa será realizada dentro da camada REST no servidor, desta forma somente os dados que forem necessários serão expostos, e fica a cargo da implementação gerenciar a segurança destes dados.
Como utilizar
Para realizar essa implementação, siga os passos abaixo:
Inclua a dependência do projeto fluig-sdk-keyring, que existe a partir da atualização 1.6.5 - Liquid:
<dependency> <groupId>com.fluig</groupId> <artifactId>fluig-sdk-keyring</artifactId> <version>${fluig.version}</version> <scope>compile</scope> </dependency>
Depois implemente o activator conforme a documentação técnica de Eventos de Componentes e no método enable inclua a chamada ao método Keyring.
public class Activate implements ActivationListener { ... public void enable(ActivationEvent evt) throws Exception { Keyring.provision(RestConstant.APP_KEY); } }
Para consultar um exemplo de implementação no GIT, clique aqui.
Na classe que implementa o serviço REST, utilize Keyring.getKeys(tenantId, <CHAVE>). Este método vai retornar as chaves que serão utilizadas para fazer a autenticação via OAuth nas requisições.
Para assinar a requisição recomendamos utilizar a biblioteca signpost-core, dependência e exemplo a seguir:
<dependency> <groupId>oauth.signpost</groupId> <artifactId>signpost-core</artifactId> <version>1.2.1.1</version> </dependency>
KeyVO key = Keyring.getKeys(tenantId, RestConstant.APP_KEY); OAuthConsumer consumer = new DefaultOAuthConsumer(key.getConsumerKey(),key.getConsumerSecret()); consumer.setTokenWithSecret(key.getToken(), key.getTokenSecret()); ... HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); ... config.sign(urlConnection); urlConnection.connect();
Para consultar um exemplo de implementação no GIT, clique aqui.
Exemplos de desenvolvimento de componentes
Consulte nosso repositório de exemplos de desenvolvimentos de componentes para mais informações sobre o desenvolvimento, os projetos e componentes.
Recursos criados
Pronto! Após realizar esses passos, deve ser possível o acesso às informações disponíveis no TOTVS Fluig Plataforma sem autenticação.
Atenção!
No provisionamento das chaves são criados alguns recursos que não devem ser alterados ou excluídos.
OAuth Provider com o nome customapps-<TENANT_ID> no tenant que o componente foi ativado.
OAuth Application com o código: <KEY>-<TENANT_ID>
Application User: integration-<KEY>-<TENANT_ID>