token-guardian
Version:
A comprehensive solution for protecting and managing API tokens and secrets
101 lines (100 loc) • 3.03 kB
TypeScript
import { Logger } from '../utils/Logger';
/**
* Token usage event
*/
export interface TokenUsageEvent {
/** Timestamp of the event */
timestamp: Date;
/** Type of operation (e.g., 'api_call', 'authentication') */
operation: string;
/** Source of the usage (e.g., IP address, service name) */
source: string;
/** Success/failure status */
success: boolean;
/** Additional context */
context?: Record<string, unknown>;
}
/**
* Token fingerprint data
*/
export interface TokenFingerprint {
/** Unique fingerprint hash */
hash: string;
/** Token name/identifier */
tokenName: string;
/** First seen timestamp */
firstSeen: Date;
/** Last seen timestamp */
lastSeen: Date;
/** Usage patterns */
patterns: {
/** Common sources of usage */
sources: Set<string>;
/** Common operations performed */
operations: Set<string>;
/** Success rate */
successRate: number;
/** Total usage count */
totalUsage: number;
};
/** Usage history */
history: TokenUsageEvent[];
}
/**
* Service for fingerprinting and tracking token usage
*/
export declare class TokenFingerprinter {
private logger;
private fingerprints;
private readonly maxHistoryLength;
constructor(logger?: Logger, maxHistoryLength?: number);
/**
* Generate a fingerprint hash for a token
* @param token Token to fingerprint
* @returns Fingerprint hash
*/
private generateFingerprint;
/**
* Initialize fingerprint tracking for a token
* @param token Token to track
* @param tokenName Name/identifier for the token
* @returns Fingerprint hash
*/
initializeTracking(token: string, tokenName: string): string;
/**
* Record a token usage event
* @param fingerprint Token fingerprint
* @param event Usage event details
*/
recordUsage(tokenHash: string, event: TokenUsageEvent): void;
/**
* Detect anomalous token usage patterns
* @param fingerprint Token fingerprint
* @param event Current usage event
*/
private detectAnomalies;
/**
* Get fingerprint data for a token
* @param fingerprint Token fingerprint
* @returns Fingerprint data or null if not found
*/
getFingerprint(fingerprint: string): TokenFingerprint | null;
/**
* Get usage history for a token
* @param fingerprint Token fingerprint
* @param limit Maximum number of events to return
* @returns Array of usage events
*/
getUsageHistory(fingerprint: string, limit?: number): TokenUsageEvent[];
/**
* Get usage patterns for a token
* @param fingerprint Token fingerprint
* @returns Usage patterns or null if not found
*/
getUsagePatterns(fingerprint: string): TokenFingerprint['patterns'] | null;
/**
* Remove tracking for a token
* @param fingerprint Token fingerprint
*/
removeTracking(fingerprint: string): void;
}