CookieAuthStrategy
Cosa fa
CookieAuthStrategy delega completamente al backend la gestione delle credenziali: lato client si limita ad abilitare withCredentials: true su ogni richiesta, cosi il browser allega automaticamente i cookie cross-origin (vincolo CORS).
Il token e contenuto in un cookie con flag HttpOnly, Secure, SameSite — invisibile a JavaScript per design (mitigazione XSS).
Quando usarla
- Applicazioni con backend che gestisce sessioni server-side
- Massima protezione contro XSS (token non esfiltrabile da JS)
- Integrazione con sistemi legacy/SSR che usano cookie di sessione
- Quando il backend e nello stesso dominio o ha CORS con
Access-Control-Allow-Credentials: true
Costruttore
class CookieAuthStrategy implements IAuthStrategy {
constructor()
}
Nessun parametro. La configurazione effettiva del cookie e responsabilita esclusiva del backend.
Comportamento
applyAuth(config)— impostawithCredentials: truesulla richiestaisAuthenticated()— ritorna un flag locale aggiornato dasaveCredentials/clearCredentials. JS non puo leggere cookie HttpOnly, quindi non e possibile dedurre lo stato dal cookie stessosaveCredentials(authResponse)— porta il flag internoisAuthatrue(chiamata dopoPOST /auth/logincon esito 2xx)clearCredentials()— porta il flag afalse(chiamata dopoPOST /auth/logout)getToken()/getRefreshToken()— restituiscono semprenull: il token e invisibile a JS by designsupportsRefresh()—true: il refresh va orchestrato lato server tramite endpoint che si affida al cookie del browser
getToken() ritorna null, le richieste manuali che richiedono il token nell'header (es. per debug) non sono possibili con questa strategy. Tutto passa via cookie automatico del browser.Configurazione backend
Esempio response al login (lato server):
HTTP/1.1 200 OK
Set-Cookie: auth_token=eyJhbGc...; HttpOnly; Secure; SameSite=Strict; Path=/; Max-Age=3600
Set-Cookie: refresh_token=...; HttpOnly; Secure; SameSite=Strict; Path=/auth/refresh; Max-Age=604800
Content-Type: application/json
{ "success": true }
Flag cookie:
HttpOnly— non leggibile dadocument.cookieSecure— inviato solo su HTTPSSameSite=Strict|Lax— protezione CSRFPath=/auth/refresh— refresh token visibile solo all'endpoint dedicato
CORS
Con backend cross-origin, il server deve rispondere con:
Access-Control-Allow-Origin: https://app.example.com # NON wildcard *
Access-Control-Allow-Credentials: true
E il client withCredentials: true (gestito automaticamente dalla strategy).
Esempio
import {
AuthStrategyFactory,
AuthServiceFactory,
HttpClientFactory,
} from '@pzeta/postgrest'
const httpClient = HttpClientFactory.createFetchClient({
baseURL: 'https://api.example.com',
})
const strategy = AuthStrategyFactory.createCookieStrategy()
const authService = AuthServiceFactory.create(httpClient, strategy)
httpClient.setAuthStrategy(strategy)
httpClient.setAuthHandler(authService)
await authService.login({ email, password })
// Da questo punto le richieste portano automaticamente il cookie di sessione
Vedi anche
AuthStrategyFactory—createCookieStrategy()JwtAuthStrategy— alternativa con token in storage JSPostgRESTClient
AuthStrategyFactory
Factory statica per la creazione di tutte le strategie di autenticazione (JWT, Cookie, ApiKey, NoAuth). Espone metodi specifici e un metodo dinamico create(type, options).
JwtAuthStrategy
Strategia di autenticazione JWT Bearer. Token in sessionStorage di default, storage custom pluggable via interfaccia JwtTokenStorage.