Auth

Autenticazione multi-strategia per @pzeta/postgrest. Supporta JWT Bearer, Cookie HTTP-only, API Key e NoAuth con interfaccia comune IAuthStrategy.

Panoramica

@pzeta/postgrest espone un Strategy Pattern per l'autenticazione: ogni strategia implementa l'interfaccia IAuthStrategy e puo essere iniettata nel client HTTP a runtime, senza modificare il codice chiamante.

Il AuthService orchestra le operazioni di alto livello (login, logout, register, refresh) delegando la gestione effettiva del token alla strategia configurata. La factory AuthStrategyFactory centralizza l'instanziazione.

Strategie disponibili

StrategiaStorageSicurezzaUse case
JwtAuthStrategysessionStorage (default) o customMedia — token leggibile da JS (XSS surface)API REST stateless con refresh token
CookieAuthStrategyCookie HTTP-only (server-side)Alta — token non leggibile da JSApp con backend che gestisce sessioni
ApiKeyAuthStrategyIn-memory nell'istanzaBassa lato client — chiave a lungo termineDev/test, M2M leggero, SDK admin
NoAuthStrategyEndpoint pubblici, health-check
La libreria adotta sessionStorage come storage JWT out-of-the-box per ridurre la superficie d'attacco XSS (token isolato per tab, eliminato alla chiusura). Per persistenza cross-sessione passare uno storage custom.

Esempio rapido

import {
  AuthStrategyFactory,
  AuthServiceFactory,
  HttpClientFactory,
} from '@pzeta/postgrest'

const httpClient = HttpClientFactory.createFetchClient()
const strategy = AuthStrategyFactory.createJwtStrategy()
const authService = AuthServiceFactory.create(httpClient, strategy)

httpClient.setAuthStrategy(strategy)
httpClient.setAuthHandler(authService) // retry automatico su 401

await authService.login({ email: 'user@example.com', password: 'secret' })

Sotto-pagine

Vedi anche