1.0.8 • Published 9 months ago

sft-token v1.0.8

Weekly downloads
-
License
MIT
Repository
-
Last release
9 months ago

Secure Flex Token (SFT)

Descrição do Projeto

O Secure Flex Token (SFT) é uma solução de autenticação customizada desenvolvida para oferecer segurança avançada e flexibilidade. Inspirado em JSON Web Tokens (JWT), o SFT utiliza criptografia AES e HMAC SHA-256 para criar tokens seguros e personalizáveis.

Funcionalidades

  • Criptografia de Dados Privados: O SFT criptografa dados privados usando AES-CTR para garantir a confidencialidade.
  • Assinatura com HMAC SHA-256: Cada token é assinado para assegurar a integridade dos dados.
  • Claims Opcionais: Permite validação opcional de IP, User-Agent e Localidade.
  • Expiração Personalizável: Configurável com um TTL (Time-To-Live) para garantir validade temporária.

Tecnologias Utilizadas

  • Node.js: Utilizado para a execução do código principal.
  • Criptografia AES-CTR: Para criptografia de dados privados.
  • HMAC SHA-256: Para assinatura dos tokens.
  • Base64 URL-safe: Para encoding e decoding de dados.

Como Usar

1. Instalar Dependências

Primeiro, instale o Node.js, que é necessário para rodar o projeto.

2. Exemplo de Criação e Verificação de Token

Veja um exemplo básico de uso para criar e verificar tokens com claims customizados.

const SFT = require('sft-token');
const crypto = require('crypto');

// Gerando chaves de criptografia e HMAC para teste
const { encryptionKey, hmacKey } = SFT.generateKeys();

const data = { 
  locality: 'BR',
  ip: '192.168.0.1', 
  userAgent: 'Mozilla/5.0',
  scope: ['read', 'write'], 
  public: { name: 'Germano' },
  private: { userId: 42, role: 'admin' }
};

// Criando um token com TTL de 60 segundos
const token = SFT.createToken(data, encryptionKey, hmacKey, 60);
console.log('Token Gerado:', token);

// Verificando o token criado
try {
  const decodedData = SFT.verifyToken(token, encryptionKey, hmacKey, '192.168.0.1', 'Mozilla/5.0', 'BR');
  console.log('Dados Decodificados:', decodedData);
} catch (error) {
  console.error('Erro ao verificar token:', error.message);
}




/********************/

Token Gerado: J2iVPb9UTm6SZRDkIqOFwM4PKkrJ7bNAlE1Sm2GWzV9KOPhPB6IcR6NfHsgppOIVEeUhTQaMBGQ.eyJleHAiOjE3MzAxMDA3NTg5NzUsInNjb3BlIjpbInJlYWQiLCJ3cml0ZSJdLCJwdWJsaWMiOnsibmFtZSI6Ikdlcm1hbm8ifSwibG9jYWxpdHkiOiJCUiIsImlwIjoiMTkyLjE2OC4wLjEiLCJ1c2VyQWdlbnQiOiJNb3ppbGxhLzUuMCJ9.Y2QxMTU2YWFiYjhkZWNkOW0yc3BhYjFj.a1plc7bGdagCNRKT_T-DDckHVYBQbTBuCcL_qRjRL_Y


Dados Decodificados: {
  private: { userId: 42, role: 'admin' },
  public: {
    exp: 1730100758975,
    scope: [ 'read', 'write' ],
    public: { name: 'Germano' },
    locality: 'BR',
    ip: '192.168.0.1',
    userAgent: 'Mozilla/5.0'
  }
}
1.0.8

9 months ago

1.0.7

9 months ago

1.0.6

9 months ago

1.0.5

9 months ago

1.0.4

9 months ago

1.0.3

9 months ago

1.0.2

9 months ago

1.0.1

9 months ago

1.0.0

9 months ago