Modelo de integração OAuth2 com a Digibee

Entenda como implementar um modelo de integração baseado em OAuth2 para autenticar e autorizar conexões de forma segura e eficiente.

Este documento apresenta um modelo de implementação de fluxo OAuth2 para autenticação e autorização em integrações realizadas na Digibee Integration Platform. O objetivo é garantir o acesso seguro a APIs protegidas, utilizando tokens de acesso e refresh tokens quando aplicável.

Você aprenderá o padrão de implementação do fluxo de autenticação OAuth2 na Digibee, incluindo:

  • Etapas de geração de credenciais

  • Obtenção do token

  • Renovação (refresh) do token

  • Remoção de credenciais

Observações importantes:

  • O pipeline deve ser configurado com, no mínimo, duas execuções simultâneas (Digibee Execution Config) para garantir o correto funcionamento do mecanismo, já que ele realiza uma autochamada para gerar o token.

  • O fluxo de OAuth2 segue o padrão de autorização client_credentials, adequado para integrações entre sistemas, sem interação humana.

  • A renovação (refresh) do token é realizada automaticamente antes da expiração, garantindo que um token válido esteja sempre disponível para uso.

Arquitetura

Visão geral

Diagrama:

Pipeline:

Descrição

  • Os pipelines implementam um fluxo completo de autenticação OAuth2, permitindo:

    • Criação de credenciais

    • Obtenção do token de acesso

    • Renovação (refresh) do token

    • Exclusão de credenciais

  • O pipeline responsável pode ser acionado tanto para geração inicial do token quanto para renovação ou gestão das credenciais, de acordo com os parâmetros de entrada.

  • Esse mecanismo pode ser reutilizado por outros pipelines de negócio por meio de chamadas de evento, API ou encapsulamento em cápsulas.

Fluxo detalhado

  1. Geração de credenciais

    • Cria um par clientId e clientSecret para futuras autenticações.

  2. Obtenção de token

    • Gera o token de acesso (access_token) e o refresh_token.

  3. Renovação de token

    • Renova o token de acesso utilizando o refresh_token antes da expiração.

  4. Remoção de credenciais

    • Remove as credenciais (clientId) do sistema de autenticação.

Payloads

1. Geração de credenciais

Request:

{
    "partnerId": "TestSistema",
    "executionType": "create",
    "apikey": "..."
}

​Response:

{
    "clientId": "clientId",
    "clientSecret": "clientSecret"
}

2. Obtenção do token

Request:

{
    "password": "clientSecret",
    "grant_type": "client_credentials",
    "username": "clientId"
}

Response:

{
    "token_type": "Bearer",
    "expires_in": 3600000,
    "ext_expires_in": 3600000,
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "refresh_token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9..."
}

3. Renovação (refresh) do token

Request:

{
    "grant_type": "refresh_token",
    "refresh_token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9..."
}

Response:

{
    "token_type": "Bearer",
    "expires_in": 3600000,
    "ext_expires_in": 3600000,
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "refresh_token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9..."
}

4. Exclusão de credenciais

Request:

{
    "clientId": "clientId",
    "executionType": "delete",
    "apikey": "..."
}

Response:

{
    "code": 200,
    "message": "Success when deleting client credentials for the clientId: clientId"
}

Atualizado

Isto foi útil?