Skip to main content

JWT Utils

Utilidades para trabajar con JSON Web Tokens (JWT) en Camarauth SDK.

Visión General

El SDK proporciona funciones helper para:
  • Decodificar tokens
  • Verificar expiración
  • Extraer información del usuario

Decodificar Token

import { decodeToken } from 'camarauth-sdk';

const token = 'eyJhbGciOiJIUzI1NiIs...';
const payload = decodeToken(token);

console.log(payload);
// {
//   userId: '123',
//   name: 'Juan',
//   roles: ['user'],
//   iat: 1234567890,
//   exp: 1234567950
// }

Verificar Expiración

import { isTokenExpired } from 'camarauth-sdk';

const token = 'eyJhbGciOiJIUzI1NiIs...';

if (isTokenExpired(token)) {
  console.log('Token expirado');
  // Usar refresh token
} else {
  console.log('Token válido');
}

Obtener Usuario del Token

import { getUserFromToken } from 'camarauth-sdk';

const token = 'eyJhbGciOiJIUzI1NiIs...';
const user = getUserFromToken(token);

console.log(user);
// {
//   id: '123',
//   name: 'Juan',
//   email: 'juan@example.com',
//   roles: ['user']
// }

Funciones Disponibles

FunciónDescripción
decodeToken(token)Decodifica un JWT (sin verificar firma)
isTokenExpired(token)Verifica si el token ha expirado
getUserFromToken(token)Extrae datos del usuario del payload

Estructura del Token

Los tokens JWT en Camarauth tienen esta estructura:
interface JWTPayload {
  // Datos del usuario
  userId: string;
  name: string;
  email?: string;
  roles: string[];
  
  // Metadatos
  iat: number;    // Issued at (timestamp)
  exp: number;    // Expiration (timestamp)
  iss: string;    // Issuer (camarauth)
  aud: string;    // Audience (camarauth-client)
  jti?: string;   // JWT ID (para refresh tokens)
}

Refresh Token

Los refresh tokens tienen una estructura diferente:
interface RefreshTokenPayload {
  userId: string;
  type: 'refresh';
  jti: string;      // ID único del token
  iat: number;
  exp: number;      // Expira en 7 días
}

Uso en Autenticación

import { getUserFromToken, isTokenExpired } from 'camarauth-sdk';

// Al cargar la aplicación
const token = localStorage.getItem('token');

if (token && !isTokenExpired(token)) {
  const user = getUserFromToken(token);
  // Usuario autenticado
  setUser(user);
} else {
  // Token expirado o no existe
  // Intentar refresh o redirigir a login
}

Notas de Seguridad

Estas utilidades solo decodifican el token, no verifican la firma. La verificación de firma debe hacerse en el servidor.
// ❌ No verifica firma (client-side)
const payload = decodeToken(token);

// ✅ Verifica firma (server-side)
const payload = jwt.verify(token, secret);