Scenario: ho effettuato l'accesso ad alcune applicazioni (java - swing). L'autenticazione è tipica: l'accesso e la password controllati dal server (J2EE) all'avvio dell'applicazione client, dopo il normale lavoro nell'app includendo molte richieste / risposte:
Client <------------------> Server1
Ora desidero fare qualcosa di simile: l'utente fa clic su un pulsante dell'applicazione e dopo di ciò, l'app apre il browser Internet predefinito con qualche URL che punta ad altri server www ( Server2 ) ma con "contesto / sessione utente" per l'elaborazione successiva (invio della richiesta a Server1 ), in questo modo:
Client -----> Browser -----> Server2 -----> Server1
La pagina dovrebbe "catturare" l'ID della sessione utente del client presente (tipo di single sign-on). Per quanto ne so, non è in grado di avviare il browser con il cookie creato "prima di iniziare", quindi l'idea è:
- Apertura del browser con / Server2ServiceUrl / JSESSIONID.
- Il browser va a Server2ServiceUrl.
- L'utente sta eseguendo alcune operazioni sulla pagina (modulo di riempimento) e facendo clic su "salva" in questa pagina.
- Il risultato è richiesto a Server2.
- Server2 crea un cookie di sessione (JSESSIONID) basato su JSESSIONID nell'URL iniziale e invia la richiesta a Server1 con cookie di sessione (nell'intestazione HTTP "Cookie") in modo che Server1 sappia quale utente invia la richiesta.
Naturalmente è molto lontano essere sicuri. Uno dei grandi problemi è l'ID di sessione visibile tutto il tempo nella barra degli indirizzi del browser. Una delle idee per aumentare un po 'la sicurezza è:
- Il browser va a Server2Url, ma non al servizio, solo a qualche URL che:
- creerà un cookie di sessione del browser basato su JSESSIONID nell'URL iniziale
- invierà il comando di reindirizzamento al browser.
- Browser crea cookie di sessione e reindirizza al servizio (Server2ServiceUrl). Per questo motivo l'ID di sessione sarà visibile nella barra degli indirizzi del browser solo fino al reindirizzamento.
Tuttavia ritengo che questo concetto dovrebbe essere più sicuro. Cosa dovrei fare allora? Forse c'è qualche tecnica standard per risolvere questo problema?