AtAuth
at main 78 lines 1.9 kB view raw
1/** 2 * Forward-Auth Proxy Types 3 * 4 * Types for the forward-auth/SSO gateway that protects 5 * arbitrary services via nginx auth_request. 6 */ 7 8/** A gateway-level SSO session (stored in SQLite) */ 9export interface ProxySession { 10 id: string; 11 did: string; 12 handle: string; 13 created_at: number; 14 expires_at: number; 15 last_activity: number; 16 user_agent?: string; 17 ip_address?: string; 18} 19 20/** An origin allowed to use forward-auth */ 21export interface ProxyAllowedOrigin { 22 id: number; 23 origin: string; // e.g. "https://search.example.com" 24 name: string; // e.g. "SearXNG" 25 created_at: number; 26} 27 28/** Pending forward-auth login request (stored while user does AT Proto OAuth) */ 29export interface ProxyAuthRequest { 30 id: string; 31 redirect_uri: string; 32 created_at: number; 33 expires_at: number; 34} 35 36/** An access control rule for forward-auth proxy */ 37export interface ProxyAccessRule { 38 id: number; 39 origin_id: number | null; // null = global rule 40 rule_type: 'allow' | 'deny'; 41 subject_type: 'did' | 'handle_pattern'; 42 subject_value: string; 43 description: string | null; 44 created_at: number; 45} 46 47/** Result of an access check */ 48export interface AccessCheckResult { 49 allowed: boolean; 50 matched_rule_id: number | null; 51 reason: string; // for logging/admin, NOT for user display 52} 53 54/** Payload inside the _atauth_session cookie (on ATAuth domain) */ 55export interface ProxySessionCookiePayload { 56 typ: 'session' | 'proxy' | 'admin'; 57 sid: string; 58 iat: number; 59 exp: number; 60} 61 62/** Payload inside the _atauth_ticket URL parameter (short-lived redirect token) */ 63export interface ProxyTicketPayload { 64 sid: string; 65 did: string; 66 handle: string; 67 origin: string; 68 iat: number; 69 exp: number; 70} 71 72/** Forward-auth configuration */ 73export interface ForwardAuthConfig { 74 enabled: boolean; 75 sessionSecret: string; 76 sessionTtl: number; // seconds, default 7 days 77 proxyCookieTtl: number; // seconds, default 24h 78}