Come si implementa un sistema di sessioni attive come LinkedIn? [chiuso]

2

Con alcune piattaforme, come LinkedIn, puoi visualizzare un elenco di tutte le sessioni in cui hai effettuato l'accesso e puoi persino effettuare il logout a distanza.

Come implementeresti qualcosa del genere? Non sto parlando di codice specifico, ma di più sul flusso generale.

Sto utilizzando ASP.NET da solo, ma penso che un approccio generale sarebbe più utile per gli altri.

In questo momento sto pensando a qualcosa di simile:

  • Accesso utente, convalida combinazione email / password
  • Genera GUID, salva nel database insieme a UserId e informazioni sul browser.
  • Inserisci cookie in un cookie di sola lettura server.
  • Quando l'utente vuole uscire da una distanza, rimuoviamo il GUID nel database.

Uno dei problemi di sicurezza qui è che il GUID può essere intercettato e un utente malintenzionato potrebbe utilizzarlo per accedere.

Quindi, come farlo correttamente?

    
posta Dirk Boer 27.12.2014 - 18:47
fonte

1 risposta

4

Ogni sessione avrà qualche artefatto di autorizzazione che usa per tenere traccia delle sessioni. (Nelle applicazioni web, di solito questo è un token in un cookie, sebbene non abbia in un cookie.)

Quando l'applicazione concede tali artefatti di autorizzazione, è possibile mantenere un collegamento a un utente e quindi gestirli come una relazione uno-a-molti: un utente ha molti token. Quindi fornisci tutte le solite operazioni come elencare tutto, filtrare / cercare, eliminare, ecc.

Di solito, quando un servizio o un framework concede un nuovo artefatto di autorizzazione, perde semplicemente traccia di quelli vecchi. Quindi c'è un implicito uno a molti (un utente, molte sessioni), tranne che le altre sessioni sono semplicemente perse e alla fine eliminate. Ma puoi tenerne traccia esplicitamente se mantieni un link all'account utente.

    
risposta data 27.12.2014 - 19:02
fonte

Leggi altre domande sui tag