UNPKG

codecrucible-synth

Version:

Production-Ready AI Development Platform with Multi-Voice Synthesis, Smithery MCP Integration, Enterprise Security, and Zero-Timeout Reliability

92 lines 2.64 kB
/** * Authentication Middleware for CLI Security * Integrates enterprise authentication with CLI request processing */ import { RBACSystem } from '../security/production-rbac-system.js'; import { SecretsManager } from '../security/secrets-manager.js'; export interface AuthenticatedRequest { userId?: string; username?: string; permissions?: string[]; sessionId?: string; authenticated: boolean; authMethod?: 'token' | 'apikey' | 'interactive' | 'none'; } export interface AuthMiddlewareConfig { enabled: boolean; requireAuth: boolean; allowedUnauthenticatedCommands: string[]; tokenHeader?: string; apiKeyHeader?: string; sessionTimeout: number; } export declare class AuthMiddleware { private rbacSystem; private secretsManager; private authManager; private config; private isInitialized; constructor(rbacSystem: RBACSystem, secretsManager: SecretsManager, config?: Partial<AuthMiddlewareConfig>); /** * Initialize authentication middleware */ initialize(): Promise<void>; /** * Authenticate CLI request */ authenticateRequest(command: string, headers?: Record<string, string>, ipAddress?: string, interactive?: boolean): Promise<AuthenticatedRequest>; /** * Authenticate with JWT token */ private authenticateWithToken; /** * Authenticate with API key */ private authenticateWithAPIKey; /** * Interactive authentication for CLI */ private authenticateInteractive; /** * Check if command is allowed without authentication */ private isUnauthenticatedCommandAllowed; /** * Store session token for subsequent requests */ private storeSessionToken; /** * Load stored session token */ loadStoredToken(): Promise<string | null>; /** * Validate permission for specific operation */ validatePermission(auth: AuthenticatedRequest, operation: string, resource?: string): Promise<boolean>; /** * Logout current session */ logout(sessionId?: string): Promise<void>; /** * Ensure default admin user exists */ private ensureDefaultAdminUser; /** * Get authentication statistics */ getAuthStats(): Promise<{ activeSessions: number; activeAPIKeys: number; rateLimitedIPs: number; totalUsers: number; }>; /** * Check if authentication is enabled */ isAuthEnabled(): boolean; /** * Check if authentication is required */ isAuthRequired(): boolean; } //# sourceMappingURL=auth-middleware.d.ts.map