Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Informações
titleAtenção

Esta página foi revisada para considerar as configurações do fluig a partir da atualização 1.6.5 - Liquid.

Índice

Índice
outlinetrue
exclude.*ndice
stylenone

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 fluig 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:

  1. 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.
  2. 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:

Painel
Deck of Cards
idPassos
Card
id01
labelPasso 01

Inclua a dependência do projeto fluig-sdk-keyring, que existe a partir da atualização 1.6.5 - Liquid:

Bloco de código
<dependency>
 <groupId>com.fluig</groupId>
 <artifactId>fluig-sdk-keyring</artifactId>
 <version>${fluig.version}</version>
 <scope>compile</scope>
</dependency>
Card
id02
labelPasso 02

Depois implemente o activator conforme a documentação técnica deEventos de Componentes e no método enable inclua a chamada ao método Keyring.

Bloco de código
languagejava
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.

Card
id03
labelPasso 03

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:

Bloco de código
<dependency>
 <groupId>oauth.signpost</groupId>
 <artifactId>signpost-core</artifactId>
 <version>1.2.1.1</version>
</dependency>
Bloco de código
languagejava
titleExemplo
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.

Recursos criados

Pronto! Após realizar esses passos, deve ser possível o acesso às informações disponíveis no fluig sem autenticação.

Nota
titleAtençã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>