sft-token
v1.0.8
Published
Secure Flex Token (SFT) - Custom authentication solution with AES and HMAC security
Downloads
647
Maintainers
Readme
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'
}
}