UNPKG

bc-code-intelligence-mcp

Version:

BC Code Intelligence MCP Server - Complete Specialist Bundle with AI-driven expert consultation, seamless handoffs, and context-preserving workflows

110 lines 3.29 kB
/** * Security & Access Control System * * Enterprise-grade security features including authentication, authorization, * rate limiting, input validation, and audit logging for production deployments. */ import { EventEmitter } from 'events'; export interface SecurityConfig { enable_authentication: boolean; enable_rate_limiting: boolean; enable_audit_logging: boolean; api_key_required: boolean; allowed_origins?: string[]; max_requests_per_minute: number; session_timeout_minutes: number; enable_content_security: boolean; trusted_sources: string[]; audit_log_retention_days: number; } export interface UserContext { user_id?: string; api_key?: string; permissions: string[]; rate_limit_remaining: number; session_expires: number; origin?: string; ip_address?: string; } export interface SecurityEvent { event_type: 'auth_success' | 'auth_failure' | 'rate_limit_exceeded' | 'access_denied' | 'suspicious_activity'; timestamp: number; user_context?: Partial<UserContext>; details: Record<string, any>; severity: 'low' | 'medium' | 'high' | 'critical'; } export interface RateLimitInfo { requests_made: number; requests_remaining: number; reset_time: number; is_limited: boolean; } export declare class SecurityManager extends EventEmitter { private readonly config; private apiKeys; private rateLimitBuckets; private activeSessions; private auditLog; private trustedSourceCache; constructor(config: SecurityConfig); /** * Authenticate request and validate permissions */ authenticateRequest(apiKey?: string, requestOrigin?: string, ipAddress?: string, requiredPermissions?: string[]): Promise<{ success: boolean; userContext?: UserContext; error?: string; }>; /** * Check rate limits for a user/IP */ checkRateLimit(identifier: string): RateLimitInfo; /** * Validate content security for layer sources */ validateContentSecurity(sourceUrl: string, sourceType: string, content?: string): Promise<{ secure: boolean; warnings: string[]; blockedContent?: string[]; }>; /** * Add or update API key with permissions */ addApiKey(apiKey: string, permissions: string[]): void; /** * Remove API key */ removeApiKey(apiKey: string): boolean; /** * Get security audit log */ getAuditLog(limit?: number): SecurityEvent[]; /** * Get security statistics */ getSecurityStats(): { active_api_keys: number; rate_limited_users: number; audit_events: number; suspicious_activities: number; successful_authentications: number; failed_authentications: number; }; /** * Export security configuration (sanitized) */ exportConfig(): Omit<SecurityConfig, 'api_key_required'> & { api_keys_configured: number; }; /** * Shutdown security manager */ shutdown(): void; private hashApiKey; private generateUserId; private getRemainingRequests; private isSourceTrusted; private auditSecurityEvent; private startPeriodicCleanup; } //# sourceMappingURL=access-control.d.ts.map