Come invalidare una sessione utente quando registra due volte con le stesse credenziali

Sto usando JSF 1.2 con Richfaces e Facelets.

Ho un’applicazione con molti bean con scope di sessione e alcuni bean di applicazione.

L’utente accede con, diciamo, Firefox. Viene creata una sessione con ID = “A”; Quindi apre Chrome e accede di nuovo con le stesse credenziali. Viene creata una sessione con ID = “B”.

Quando viene creata la sessione “B”, voglio essere in grado di distruggere la sessione “A”. Come farlo?

Anche. quando l’utente in Firefox fa qualcosa, voglio essere in grado di visualizzare un popup o una sorta di notifica che dice “Sei stato disconnesso perché hai effettuato l’accesso da qualche altra parte”.

Ho un sessionListener che tiene traccia delle sessioni create e distrutte. Il fatto è che potrei salvare l’object HTTPSession in un bean con scope dell’applicazione e distruggerlo quando rilevo che l’utente ha effettuato l’accesso due volte. Ma qualcosa mi dice che è solo sbagliato e non funzionerà.

JSF tiene traccia delle sessioni da qualche parte sul lato server? Come accedervi per identificatore? In caso negativo, come eseguire il primo accesso di un utente quando effettua l’accesso due volte?