BlueCoat quando distribuito come proxy trasparente può utilizzare il concetto di surrogati dei cookie per autenticare un utente, per farlo funzionare il meccanismo di base utilizzato è il reindirizzamento a un URL virtuale che richiederà sempre l'autenticazione (HTTP 401), ecco come è implementato su di esso:
Prima autenticazione:
1. UA (agente utente) emette un GET /
in HOST:www.example.com
2. Il server proxy intercetta il GET e risponde con un reindirizzamento (302) all'URL virtuale e una stringa di query che contiene l'URL originale richiesto, ad es. " http://virtualURL.com?QueryString
"
3. UA tenta di connettersi all'URL virtuale
4. Il proxy risponde con HTTP 401, richiedendo l'autenticazione
5. UA riemette la stessa richiesta del passaggio 3, ma con le credenziali di autenticazione
6. UA viene nuovamente reindirizzato (302), questa volta all'URL originale, la stringa di query è ancora collegata a questo reindirizzamento ( http://www.example.com?QueryString
), inoltre c'è un SET-COOKIE
che sembra provenire da virtualURL (verrà utilizzato su richieste a siti diversi da quello iniziale)
7. UA si collega all'URL originale + stringa di query, poiché ha ancora la stringa di query sulla richiesta che il proxy emette un nuovo 302, questa volta a www.example.com
, include anche un SET-COOKIE
, ma questa volta il cookie si comporta come emesso dal dominio example.com.
8. UA si connette a www.example.com
, il cookie viene anche ricevuto e accettato. Questo cookie notifica al proxy che l'utente è autenticato.
9. Il proxy inoltra la richiesta UA all'URL originale rimuovendo il cookie, per non interferire con la transazione.
Le richieste successive seguiranno come:
Richiesta di www.newsite.com
, reindirizzati a virtualURL?QueryString
, questa volta esiste già un cookie per il dominio virtualURL, quindi non è necessario un 401, nuovo reindirizzamento a newsite.com?QueryString
, SET-COOKIE
per nuovo dominio, reindirizzamento a URL originale.
Immagino che usando lo stesso concetto puoi adattarlo al tuo server proxy.