2012-02-24 12 views
7

Ho appena creato un servlet HelloWorld e implementato CAS su di esso. Mi viene in grado di accedere senza problemi e CAS è l'impostazione 3 cookie nel browser, il CASGT, e 2 JSESSIONID 1 per/CAS e un'altra per/helloWorldEliminazione logout e cookie CAS

Il problema è che allora accedo https://blah:8443/cas/logout, ho guarda la schermata di logout logout ma i cookies sono ancora nel mio browser, quindi non sarò disconnesso, potrò entrare di nuovo in/helloWorld senza che la schermata di login venga visualizzata.

Sai cosa devo fare per CAS per eliminare i cookie che ha creato quando esco?

Grazie in anticipo

risposta

5

biscotto CASGT è impostato dal CAS e dovrebbe essere impostata da esso. La procedura di logout CAS funziona in questo modo:

  1. Si accede effettivamente alla pagina di uscita CAS. La pagina dovrebbe conoscere l'applicazione da cui si sta effettuando il logout. Un modo è reindirizzare alla pagina di disconnessione CAS dall'applicazione, fornendo l'URL di reindirizzamento come parametro.

  2. Il cookie viene cancellato e viene quindi reindirizzato alla vostra applicazione tramite richiesta POST.

  3. SingleSignOutFilter rileva un parametro speciale "logoutRequest" e in realtà distrugge il mapping ticket/sessione che ha mantenuto sin dall'inizio e annulla anche la sessione corrente.

Per eseguire il debug di CAS, abilitare la registrazione del livello TRACE. In questo modo saprai se la richiesta è stata ricevuta o se la sessione è stata invalidata.

Consiglio inoltre di consultare il codice del pacchetto org.jasig.cas.client.session, che è piuttosto semplice.

+2

Grazie mille per i tuoi suggerimenti Infeligo, loro non ha risolto il mio problema ma mi ha aiutato a scoprire cosa stava andando storto.Il problema che avevo era una configurazione SSL, la schermata di logout veniva richiamata su http, quindi il browser non inviava il cookie CASGT, quindi il server CAS non fa altro che mostrare una schermata che dice che il logout è andato a buon fine. –

+0

Devi implementare del codice personalizzato sul lato server CAS per eliminare i cookie personalizzati dopo il logout riuscito – alexanoid

3

È necessario controllare la documentazione sulla singola uscita CAS che può essere trovata here. Dice:

Dove Single Sign Out Works:

Clienti/Lingue cui la gestione delle sessioni è mantenuta sul lato server. I client CAS possono quindi accedere alle informazioni sulla sessione per terminare la sessione .

Dove Single Sign Out non funziona:

Clienti/lingue il cui gestione della sessione solo costituito da biscotti. CAS non ha accesso ai cookie del browser e non può quindi terminare una sessione . (tuttavia, la chiusura di una finestra del browser dovrebbe essere )

E penso che sia più o meno il tuo caso. Basato su cookie non è possibile fare un SSout, ma se si può usare un framework come Spring (come facciamo nei nostri progetti) SSout è facile da configurare ed è molto pratico