Autenticação da API

Sistema de Tokens

A API do Ravi Monitor utiliza um sistema de autenticação baseado em tokens com permissões granulares por módulo.

Obtendo um Token

1. Acesso Administrativo

Os tokens são criados através da interface administrativa do Ravi Monitor:

  1. Acesse o painel administrativo
  2. Navegue até Configurações → Integrações → Gerenciamento de API
  3. Clique em Nova chave API
  4. Configure as permissões necessárias
  5. Salve e copie o token gerado

2. Configuração de Permissões

Cada token pode ter as seguintes permissões:

Módulo Descrição Permissão
Concentradoras Monitoramento de Conexões PPPoE concentradora
OLTs Gerenciamento de OLTs e ONTs olt
DNS Configuração de DNS dns
WhatsApp Envio de mensagens whatsapp
Dispositivos Gerenciamento de Grupos, dispositivos e sensores dispositivo

Usando o Token

Método 1: POST Body

curl -X POST "https://seu-servidor-ravi/api.php" \
  -d "token=SEU_TOKEN_AQUI" \
  -d "action=olt" \
  -d "operation=search_olt"

Método 2: Query String

curl "https://seu-servidor-ravi/api.php?token=SEU_TOKEN_AQUI&action=olt&operation=search_olt"

Método 3: Mixed (Token no POST, outros parâmetros na URL)

curl -X POST "https://seu-servidor-ravi/api.php?action=olt&operation=search_olt" \
  -d "token=SEU_TOKEN_AQUI"

Validação de Token

Token Válido

{
  "status": "success",
  "data": {
    // Dados da operação
  }
}

Token Inválido

{
  "status": "error",
  "message": "Invalid token"
}

Token sem Permissão

{
  "status": "error",
  "message": "Access denied for olt"
}

Estrutura do Token

Características

Exemplo de Token

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6

Boas Práticas de Segurança

1. Armazenamento Seguro

# ✅ Correto - variável de ambiente
export RAVI_API_TOKEN="seu_token_aqui"
curl -d "token=$RAVI_API_TOKEN" ...

# ❌ Incorreto - hardcoded no código
curl -d "token=a1b2c3d4e5f6g7h8" ...

2. Princípio do Menor Privilégio

3. Monitoramento

4. Rotação de Tokens

Exemplos Práticos

Script Shell

#!/bin/bash
TOKEN="seu_token_aqui"
API_URL="https://seu-servidor-ravi/api.php"

# Função para fazer requisições à API
api_request() {
    local action=$1
    local operation=$2
    shift 2

    curl -s -X POST "$API_URL" \
        -d "token=$TOKEN" \
        -d "action=$action" \
        -d "operation=$operation" \
        "$@"
}

# Exemplo de uso
api_request "olt" "search_olt" -d "olt=1"

PHP

<?php
class RaviAPI {
    private $token;
    private $baseUrl;

    public function __construct($token, $baseUrl) {
        $this->token = $token;
        $this->baseUrl = $baseUrl;
    }

    public function request($action, $operation, $params = []) {
        $data = array_merge([
            'token' => $this->token,
            'action' => $action,
            'operation' => $operation
        ], $params);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $this->baseUrl);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $response = curl_exec($ch);
        curl_close($ch);

        return json_decode($response, true);
    }
}

// Uso
$api = new RaviAPI('seu_token_aqui', 'https://seu-servidor-ravi/api.php');
$result = $api->request('olt', 'search_olt', ['olt' => 1]);
?>

Troubleshooting

Problema: "Token not provided"

Solução: Verificar se o parâmetro token está sendo enviado

Problema: "Invalid token"

Solução:

Problema: "Access denied for [módulo]"

Solução:


Importante: Mantenha seus tokens seguros e nunca os exponha em repositórios públicos ou logs de aplicação.