token-guardian
Version:
A comprehensive solution for protecting and managing API tokens and secrets
56 lines • 1.59 kB
JavaScript
import { DefaultRotator } from './services/DefaultRotator';
import { Logger } from '../utils/Logger';
/**
* Manages token rotation using different rotation strategies
*/
export class TokenRotator {
logger;
rotators;
constructor() {
this.logger = new Logger('info');
this.rotators = new Map();
this.initializeRotators();
}
/**
* Initialize default rotators
*/
initializeRotators() {
this.rotators.set('default', new DefaultRotator({
secretKey: process.env.TOKEN_GUARDIAN_SECRET_KEY || 'default-secret-key',
expiresIn: 3600,
issuer: 'token-guardian',
audience: 'default',
validationOptions: {
verifyExpiration: true,
verifyIssuer: true,
verifyAudience: true,
clockTolerance: 0
}
}));
}
/**
* Register a custom rotator
*/
registerRotator(name, rotator) {
this.rotators.set(name, rotator);
this.logger.info(`Registered rotator: ${name}`);
}
/**
* Get a registered rotator
*/
getRotator(name = 'default') {
const rotator = this.rotators.get(name);
if (!rotator) {
throw new Error(`Rotator not found: ${name}`);
}
return rotator;
}
/**
* Rotate a token using the specified rotator
*/
async rotateToken(token) {
const rotator = this.getRotator('default');
return rotator.rotateToken(token);
}
}
//# sourceMappingURL=TokenRotator.js.map