UNPKG

@re-auth/http-adapters

Version:

HTTP protocol adapters for ReAuth - framework-agnostic integration with Express, Fastify, and Hono

1 lines 66.6 kB
{"version":3,"sources":["../../src/types.ts","../../src/base-adapter.ts","../../src/adapters/itty-router.ts"],"names":["error","AutoRouter","cors","json"],"mappings":"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","file":"itty-router.cjs","sourcesContent":["import { AuthOutput, ReAuthEngine, Token } from '@re-auth/reauth';\nimport { ReAuthJWTPayload } from '@re-auth/reauth/services';\nimport { CookiePrefixOptions } from 'hono/utils/cookie';\n\n// Base HTTP adapter configuration\nexport interface HttpAdapterConfig {\n engine: ReAuthEngine;\n basePath?: string;\n cors?: CorsConfig;\n rateLimit?: RateLimitConfig;\n security?: SecurityConfig;\n validation?: ValidationConfig;\n cookie?: {\n name: string;\n refreshTokenName?: string;\n options: {\n httpOnly?: boolean;\n secure?: boolean;\n sameSite?: 'lax' | 'strict' | 'none';\n path?: string;\n domain?: string;\n maxAge?: number; // in seconds\n expires?: Date;\n partitioned?: boolean;\n prefix?: CookiePrefixOptions;\n priority?: 'low' | 'medium' | 'high';\n };\n refreshOptions?: {\n httpOnly?: boolean;\n secure?: boolean;\n sameSite?: 'lax' | 'strict' | 'none';\n path?: string;\n domain?: string;\n maxAge?: number; // in seconds\n expires?: Date;\n partitioned?: boolean;\n prefix?: CookiePrefixOptions;\n priority?: 'low' | 'medium' | 'high';\n };\n };\n headerToken?: {\n accesssTokenHeader: string;\n refreshTokenHeader?: string;\n };\n}\n\n// CORS configuration\nexport interface CorsConfig {\n origin?:\n | string\n | string[]\n | boolean\n | ((\n origin: string | undefined,\n callback: (err: Error | null, allow?: boolean) => void,\n ) => void);\n credentials?: boolean;\n allowedHeaders?: string[];\n exposedHeaders?: string[];\n methods?: string[];\n preflightContinue?: boolean;\n optionsSuccessStatus?: number;\n}\n\n// Rate limiting configuration\nexport interface RateLimitConfig {\n windowMs?: number;\n max?: number;\n message?: string;\n standardHeaders?: boolean;\n legacyHeaders?: boolean;\n skipSuccessfulRequests?: boolean;\n skipFailedRequests?: boolean;\n keyGenerator?: (request: any) => string;\n}\n\n// Security configuration\nexport interface SecurityConfig {\n helmet?: boolean | HelmetConfig;\n csrf?: boolean | CsrfConfig;\n sanitizeInput?: boolean;\n sanitizeOutput?: boolean;\n}\n\nexport interface HelmetConfig {\n contentSecurityPolicy?: boolean | object;\n crossOriginEmbedderPolicy?: boolean;\n crossOriginOpenerPolicy?: boolean;\n crossOriginResourcePolicy?: boolean;\n dnsPrefetchControl?: boolean;\n frameguard?: boolean | object;\n hidePoweredBy?: boolean;\n hsts?: boolean | object;\n ieNoOpen?: boolean;\n noSniff?: boolean;\n originAgentCluster?: boolean;\n permittedCrossDomainPolicies?: boolean;\n referrerPolicy?: boolean | object;\n xssFilter?: boolean;\n}\n\nexport interface CsrfConfig {\n secret?: string;\n cookie?: boolean | object;\n sessionKey?: string;\n value?: (req: any) => string;\n}\n\n// Input validation configuration\nexport interface ValidationConfig {\n validateInput?: boolean;\n validateOutput?: boolean;\n maxPayloadSize?: number;\n allowedFields?: string[];\n sanitizeFields?: string[];\n}\n\n// HTTP request/response types for framework abstraction\nexport interface HttpRequest {\n method: string;\n url: string;\n path: string;\n query: Record<string, any>;\n params: Record<string, string>;\n body: any;\n headers: Record<string, string>;\n cookies?: Record<string, string>;\n ip?: string;\n userAgent?: string;\n // Current authenticated user information\n user?: AuthenticatedUser | null;\n}\n\n// Authenticated user information from session\nexport interface AuthenticatedUser {\n /** The authenticated subject from the session */\n subject: any;\n /** The session token */\n token: Token;\n /** Whether the session is valid */\n valid: boolean;\n /** Session metadata */\n metadata?: {\n payload?: ReAuthJWTPayload;\n type?: 'jwt' | 'legacy' | undefined;\n // Add any other metadata fields as needed\n [key: string]: any;\n };\n}\n\nexport interface HttpResponse {\n status(code: number): this;\n json(data: any): this;\n send(data: any): this;\n header(name: string, value: string): this;\n cookie(name: string, value: string, options?: any): this;\n clearCookie(name: string, options?: any): this;\n}\n\n// Framework adapter interface\nexport interface FrameworkAdapter<\n TRequest = any,\n TResponse = any,\n TNext = any,\n> {\n name: string;\n createMiddleware(): (\n req: TRequest,\n res: TResponse,\n next: TNext,\n ) => Promise<void> | void;\n createUserMiddleware(): (\n req: TRequest,\n res: TResponse,\n next: TNext,\n ) => Promise<void> | void;\n extractRequest(req: TRequest): HttpRequest;\n sendResponse(res: TResponse, data: any, statusCode?: number): void;\n handleError(res: TResponse, error: Error, statusCode?: number): void;\n getCurrentUser(req: TRequest): Promise<AuthenticatedUser | null>;\n}\n\n// Route handler types\nexport interface RouteHandler {\n (req: HttpRequest, res: HttpResponse): Promise<any> | any;\n}\n\nexport interface AuthStepRequest extends HttpRequest {\n params: Record<string, string>;\n plugin: {\n name: string;\n step: string;\n };\n}\n\nexport interface SessionRequest extends HttpRequest {\n headers: Record<string, string> & {\n authorization?: string;\n };\n}\n\n// Plugin endpoint metadata\nexport interface PluginEndpoint {\n pluginName: string;\n stepName: string;\n path: string;\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';\n requiresAuth: boolean;\n description?: string;\n inputSchema?: any;\n outputSchema?: any;\n}\n\n// HTTP adapter response types\nexport interface ApiResponse<T = any> {\n success: boolean;\n data?: T;\n error?: {\n code: string;\n message: string;\n details?: any;\n };\n meta?: {\n timestamp: string;\n requestId?: string;\n pagination?: {\n page: number;\n limit: number;\n total: number;\n };\n };\n}\n\nexport interface AuthStepResponse extends ApiResponse<AuthOutput> {\n data?: AuthOutput & {\n nextStep?: string;\n requiresRedirect?: boolean;\n sessionToken?: Token;\n };\n status: number;\n /** Redirect URL for OAuth flows */\n redirect?: string;\n /** Secret data (cookies) to set for OAuth flows */\n secret?: Record<string, string>;\n}\n\nexport interface SessionResponse extends ApiResponse {\n data?: {\n valid: boolean;\n subject?: any;\n token?: Token;\n expiresAt?: string;\n metadata?: {\n payload?: ReAuthJWTPayload;\n type?: 'jwt' | 'legacy' | undefined;\n // Add any other metadata fields as needed\n [key: string]: any;\n };\n };\n}\n\nexport interface PluginListResponse extends ApiResponse {\n data?: Array<{\n name: string;\n description: string;\n steps: Array<{\n name: string;\n description?: string;\n method: string;\n path: string;\n requiresAuth: boolean;\n }>;\n }>;\n}\n\n// Middleware types\nexport interface MiddlewareFunction<\n TRequest = any,\n TResponse = any,\n TNext = any,\n> {\n (req: TRequest, res: TResponse, next: TNext): Promise<void> | void;\n}\n\nexport interface SecurityMiddleware {\n cors(): MiddlewareFunction;\n rateLimit(): MiddlewareFunction;\n helmet(): MiddlewareFunction;\n validation(): MiddlewareFunction;\n}\n\n// Error types\nexport class HttpAdapterError extends Error {\n constructor(\n message: string,\n public statusCode: number = 500,\n public code: string = 'INTERNAL_ERROR',\n public details?: any,\n ) {\n super(message);\n this.name = 'HttpAdapterError';\n }\n}\n\nexport class ValidationError extends HttpAdapterError {\n constructor(message: string, details?: any) {\n super(message, 400, 'VALIDATION_ERROR', details);\n this.name = 'ValidationError';\n }\n}\n\nexport class AuthenticationError extends HttpAdapterError {\n constructor(message: string, details?: any) {\n super(message, 401, 'AUTHENTICATION_ERROR', details);\n this.name = 'AuthenticationError';\n }\n}\n\nexport class AuthorizationError extends HttpAdapterError {\n constructor(message: string, details?: any) {\n super(message, 403, 'AUTHORIZATION_ERROR', details);\n this.name = 'AuthorizationError';\n }\n}\n\nexport class NotFoundError extends HttpAdapterError {\n constructor(message: string, details?: any) {\n super(message, 404, 'NOT_FOUND', details);\n this.name = 'NotFoundError';\n }\n}\n\nexport class RateLimitError extends HttpAdapterError {\n constructor(message: string, details?: any) {\n super(message, 429, 'RATE_LIMIT_EXCEEDED', details);\n this.name = 'RateLimitError';\n }\n}\n","import { AuthInput, ReAuthEngine, Token } from '@re-auth/reauth';\nimport type { LoggerInterface } from '@re-auth/logger';\nimport type {\n HttpAdapterConfig,\n HttpRequest,\n HttpResponse,\n FrameworkAdapter,\n RouteHandler,\n AuthStepRequest,\n SessionRequest,\n PluginEndpoint,\n ApiResponse,\n AuthStepResponse,\n SessionResponse,\n PluginListResponse,\n AuthenticatedUser,\n} from './types';\nimport {\n HttpAdapterError,\n ValidationError,\n AuthenticationError,\n NotFoundError,\n} from './types';\n\nexport class ReAuthHttpAdapter {\n private engine: ReAuthEngine;\n protected config: HttpAdapterConfig;\n private endpoints: Map<string, PluginEndpoint> = new Map();\n private logger: LoggerInterface;\n\n constructor(config: HttpAdapterConfig, logger: LoggerInterface) {\n this.engine = config.engine;\n this.config = config;\n this.logger = logger;\n this.buildEndpoints();\n }\n\n /**\n * Get adapter configuration\n */\n getConfig(): HttpAdapterConfig {\n return this.config;\n }\n\n /**\n * Build endpoint map from registered plugins\n */\n private buildEndpoints(): void {\n const plugins = this.engine.getAllPlugins();\n\n for (const plugin of plugins) {\n if (!plugin.steps) continue;\n\n for (const step of plugin.steps) {\n const endpoint: PluginEndpoint = {\n pluginName: plugin.name,\n stepName: step.name,\n path: `${this.config.basePath || ''}/${plugin.name}/${step.name}`,\n method: step.protocol?.http?.method || 'POST',\n requiresAuth: Boolean(step.protocol?.http?.auth),\n description: step.description,\n inputSchema: step.validationSchema,\n outputSchema: step.outputs,\n };\n\n const key = `${plugin.name}:${step.name}`;\n this.endpoints.set(key, endpoint);\n }\n }\n }\n\n /**\n * Get all available endpoints\n */\n getEndpoints(): PluginEndpoint[] {\n return Array.from(this.endpoints.values());\n }\n\n /**\n * Get endpoint by plugin and step name\n */\n getEndpoint(\n pluginName: string,\n stepName: string,\n ): PluginEndpoint | undefined {\n return this.endpoints.get(`${pluginName}:${stepName}`);\n }\n\n /**\n * Execute authentication step\n */\n async executeAuthStep(\n req: AuthStepRequest,\n deviceInfo: Record<string, any>,\n ): Promise<AuthStepResponse> {\n const endpoint = this.getEndpoint(req.plugin.name, req.plugin.step);\n if (!endpoint) {\n throw new NotFoundError(\n `Endpoint not found: ${req.plugin.name}/${req.plugin.step}`,\n );\n }\n\n // Check authentication if required\n if (endpoint.requiresAuth) {\n await this.requireAuthentication(req, deviceInfo);\n } else {\n //NOTE: this is to ensure token will be auto refresh if needed when a token is availabe\n await this.getCurrentUser(req, deviceInfo);\n }\n\n // Extract input from request\n const input = this.extractStepInput(req, endpoint, deviceInfo);\n\n try {\n // Execute the step\n const output = await this.engine.executeStep(\n endpoint.pluginName,\n endpoint.stepName,\n input,\n );\n\n // Return standardized response\n const pl = this.engine.getPlugin(endpoint.pluginName);\n const step = pl?.steps?.find((s) => s.name === endpoint.stepName);\n\n const status = step?.protocol?.http?.codes?.[output.status] || 200;\n\n return {\n success: true,\n data: {\n ...output,\n sessionToken: output.token,\n },\n meta: {\n timestamp: new Date().toISOString(),\n },\n status,\n redirect: output.redirect, // Include redirect URL for OAuth flow\n secret: output.secret, // Include cookies to set for OAuth flow\n };\n } catch (error) {\n throw new HttpAdapterError(\n `Step execution failed: ${error instanceof Error ? error.message : String(error)}`,\n 500,\n 'STEP_EXECUTION_ERROR',\n { pluginName: endpoint.pluginName, stepName: endpoint.stepName, error },\n );\n }\n }\n\n /**\n * Create a new session\n */\n async createSession(\n req: SessionRequest,\n deviceInfo: Record<string, any>,\n ): Promise<SessionResponse> {\n const { subjectType, subjectId, ttlSeconds } = req.body || {};\n\n if (!subjectType || !subjectId) {\n throw new ValidationError('subjectType and subjectId are required');\n }\n\n try {\n const token = await this.engine.createSessionFor(\n subjectType,\n subjectId,\n ttlSeconds,\n deviceInfo,\n );\n\n return {\n success: true,\n data: {\n valid: true,\n token,\n expiresAt: ttlSeconds\n ? new Date(Date.now() + ttlSeconds * 1000).toISOString()\n : undefined,\n },\n meta: {\n timestamp: new Date().toISOString(),\n },\n };\n } catch (error) {\n throw new HttpAdapterError(\n `Session creation failed: ${error instanceof Error ? error.message : String(error)}`,\n 500,\n 'SESSION_CREATION_ERROR',\n );\n }\n }\n\n /**\n * Check session validity\n */\n async checkSession(\n req: SessionRequest,\n deviceInfo: Record<string, any>,\n ): Promise<SessionResponse> {\n const token = this.extractSessionToken(req);\n\n if (!token) {\n return {\n success: false,\n data: {\n valid: false,\n },\n meta: {\n timestamp: new Date().toISOString(),\n },\n };\n }\n\n try {\n const result = await this.engine.checkSession(token, deviceInfo);\n\n if (!result.subject) {\n return {\n success: false,\n data: {\n valid: false,\n },\n meta: {\n timestamp: new Date().toISOString(),\n },\n };\n }\n\n return {\n success: true,\n data: {\n valid: result.valid,\n subject: result.subject,\n token: result.token,\n metadata: {\n payload: result.payload,\n type: result.type,\n },\n },\n meta: {\n timestamp: new Date().toISOString(),\n },\n };\n } catch (error) {\n return {\n success: false,\n data: {\n valid: false,\n },\n meta: {\n timestamp: new Date().toISOString(),\n },\n };\n }\n }\n\n /**\n * Destroy current session\n */\n async destroySession(req: SessionRequest): Promise<ApiResponse> {\n const token = this.extractSessionToken(req);\n\n if (!token) {\n throw new ValidationError('No session token provided');\n }\n\n try {\n await this.engine.getSessionService().destroySession(token);\n\n return {\n success: true,\n meta: {\n timestamp: new Date().toISOString(),\n },\n };\n } catch (error) {\n throw new HttpAdapterError(\n `Session destruction failed: ${error instanceof Error ? error.message : String(error)}`,\n 500,\n 'SESSION_DESTRUCTION_ERROR',\n );\n }\n }\n\n /**\n * List all available plugins\n */\n async listPlugins(): Promise<PluginListResponse> {\n const plugins = this.engine.getAllPlugins();\n\n const data = plugins.map((plugin) => ({\n name: plugin.name,\n description: `${plugin.name} authentication plugin`,\n steps: (plugin.steps || []).map((step) => ({\n name: step.name,\n description: step.description,\n method: step.protocol?.http?.method || 'POST',\n path: `${this.config.basePath || ''}/auth/${plugin.name}/${step.name}`,\n requiresAuth: Boolean(step.protocol?.http?.auth),\n })),\n }));\n\n return {\n success: true,\n data,\n meta: {\n timestamp: new Date().toISOString(),\n },\n };\n }\n\n /**\n * Get specific plugin details\n */\n async getPlugin(pluginName: string): Promise<ApiResponse> {\n const plugin = this.engine.getPlugin(pluginName);\n\n if (!plugin) {\n throw new NotFoundError(`Plugin not found: ${pluginName}`);\n }\n\n const data = {\n name: plugin.name,\n description: `${plugin.name} authentication plugin`,\n steps: (plugin.steps || []).map((step) => ({\n name: step.name,\n description: step.description,\n method: step.protocol?.http?.method || 'POST',\n path: `${this.config.basePath || ''}/auth/${plugin.name}/${step.name}`,\n requiresAuth: Boolean(step.protocol?.http?.auth),\n inputs: step.inputs || [],\n inputSchema: step.validationSchema?.toJsonSchema?.() || {},\n outputSchema: step.outputs?.toJsonSchema?.() || {},\n })),\n };\n\n return {\n success: true,\n data,\n meta: {\n timestamp: new Date().toISOString(),\n },\n };\n }\n\n /**\n * Get full introspection data\n */\n async getIntrospection(): Promise<ApiResponse> {\n const introspectionData = this.engine.getIntrospectionData();\n\n // Add HTTP adapter configuration to introspection\n const httpConfig = {\n basePath: this.config.basePath || '',\n tokenConfig: {\n header: {\n accessTokenHeader:\n this.config.headerToken?.accesssTokenHeader || 'authorization',\n refreshTokenHeader:\n this.config.headerToken?.refreshTokenHeader || 'x-refresh-token',\n useBearer: true, // Default to Bearer token in Authorization header\n },\n cookie: {\n accessTokenName: this.config.cookie?.name || 'reauth-session',\n refreshTokenName:\n this.config.cookie?.refreshTokenName || 'reauth-refresh',\n enabled: !!this.config.cookie,\n },\n },\n };\n\n return {\n success: true,\n data: {\n ...introspectionData,\n httpConfig,\n },\n meta: {\n timestamp: new Date().toISOString(),\n },\n };\n }\n\n /**\n * Health check endpoint\n */\n async healthCheck(): Promise<ApiResponse> {\n return {\n success: true,\n data: {\n status: 'healthy',\n version: '2.0.0',\n plugins: this.engine.getAllPlugins().length,\n endpoints: this.endpoints.size,\n },\n meta: {\n timestamp: new Date().toISOString(),\n },\n };\n }\n\n /**\n * Extract session token from request\n */\n private extractSessionToken(req: HttpRequest): Token {\n let accessToken: string | null = null;\n let refreshToken: string | null = null;\n\n // Try Authorization header first\n const authHeader = req.headers.authorization;\n if (authHeader?.startsWith('Bearer ')) {\n accessToken = authHeader.substring(7);\n }\n\n // check custom headers\n if (\n !accessToken &&\n req.headers[\n this.config.headerToken?.accesssTokenHeader || 'x-access-token'\n ]\n ) {\n accessToken =\n req.headers[\n this.config.headerToken?.accesssTokenHeader || 'x-access-token'\n ]!;\n }\n if (\n !refreshToken &&\n req.headers[\n this.config.headerToken?.refreshTokenHeader || 'x-refresh-token'\n ]\n ) {\n refreshToken =\n req.headers[\n this.config.headerToken?.refreshTokenHeader || 'x-refresh-token'\n ]!;\n }\n\n // Try cookie\n if (\n !accessToken &&\n req.cookies?.[this.config.cookie?.name || 'reauth-session']\n ) {\n accessToken = req.cookies[this.config.cookie?.name || 'reauth-session']!;\n }\n\n if (\n !refreshToken &&\n req.cookies?.[this.config.cookie?.refreshTokenName || 'reauth-refresh']\n ) {\n refreshToken =\n req.cookies[this.config.cookie?.refreshTokenName || 'reauth-refresh']!;\n }\n\n if (!accessToken) {\n this.logger.info('http', 'No access token found in request', {\n path: req.path,\n hasHeaders: !!req.headers,\n });\n return null;\n }\n\n if (accessToken && refreshToken) {\n this.logger.info('http', 'Access token and refresh token found', {\n path: req.path,\n hasHeaders: !!req.headers,\n });\n return { accessToken, refreshToken };\n }\n\n if (accessToken && !refreshToken) {\n this.logger.info('http', 'Access token found without refresh token', {\n path: req.path,\n hasHeaders: !!req.headers,\n });\n return accessToken;\n }\n\n this.logger.info('http', 'No access token or refresh token found', {\n path: req.path,\n hasHeaders: !!req.headers,\n });\n return null;\n }\n\n /**\n * Extract step input from request\n */\n private extractStepInput(\n req: HttpRequest,\n endpoint: PluginEndpoint,\n deviceInfo: Record<string, any>,\n ): AuthInput {\n const input: AuthInput = {\n ...req.body,\n ...req.query,\n ...req.params,\n ...req.cookies, // Add cookies so OAuth flow can read oauth_state, etc.\n };\n\n // Add session token if available\n const token = this.extractSessionToken(req);\n if (token) {\n input.token = token;\n }\n\n // Add device info if provided\n if (deviceInfo) {\n input.deviceInfo = deviceInfo;\n }\n\n // Add request metadata for backward compatibility\n if (req.ip) {\n input.ip = req.ip;\n }\n if (req.userAgent) {\n input.userAgent = req.userAgent;\n }\n\n return input;\n }\n\n /**\n * Get current authenticated user from request\n */\n async getCurrentUser(\n req: HttpRequest,\n deviceInfo: Record<string, any>,\n ): Promise<AuthenticatedUser | null> {\n const token = this.extractSessionToken(req);\n\n if (!token) {\n this.logger.info('http', 'No token found in getCurrentUser', {\n path: req.path,\n hasHeaders: !!req.headers,\n });\n return null;\n }\n\n try {\n const session = await this.engine.checkSession(token, deviceInfo);\n\n if (!session.valid || !session.subject) {\n this.logger.warn('http', 'Session is not valid or subject not found', {\n hasHeaders: !!req.headers,\n });\n return null;\n }\n\n return {\n subject: session.subject,\n token: session.token || token,\n valid: session.valid,\n metadata: {\n payload: session.payload,\n type: session.type,\n },\n };\n } catch (error) {\n // Silently return null if session check fails\n this.logger.error('http', 'Session check failed', {\n hasHeaders: !!req.headers,\n error,\n });\n return null;\n }\n }\n\n /**\n * Authenticate request and return user or throw error\n */\n async requireAuthentication(\n req: HttpRequest,\n deviceInfo: Record<string, any>,\n ): Promise<AuthenticatedUser> {\n const user = await this.getCurrentUser(req, dev