Non c'è un singolo consiglio dato che varie applicazioni hanno requisiti diversi.
Le credenziali vengono spesso gestite sotto forma di token. Autenticati su un server, restituisce un token, memorizzi nella cache il token e lo passa a ogni sistema con cui hai a che fare. Il token potrebbe avere qualsiasi forma: un cookie, un ID di sessione, un ticket Kerberos, un token NTLM o qualsiasi altra cosa. Il client lo memorizza in una cache locale e lo presenta ogni volta che utilizza un servizio che deve conoscere le tue credenziali.
Quindi la prossima cosa che tu (come cliente) vuoi fare è accedere ad alcuni servizi. Presenti il token, il servizio chiama il server di autenticazione, individua i tuoi gruppi / ruoli / autorità, apprende il tempo di scadenza del tuo token e ti concede l'accesso. Il servizio quindi memorizza semplicemente il tuo token e tutti quegli attributi, quindi confronta ogni richiesta in arrivo per vedere se stai ancora utilizzando lo stesso token. Non convalida nuovamente il token fino alla scadenza indicata dal server di autenticazione.
In un'app a uso intensivo del servizio, si verificano problemi di prestazioni se si richiede al server di autenticazione di autenticare ogni singola richiesta di servizio. (Si consideri che una tipica applicazione Windows potrebbe presentare il token di sicurezza a una dozzina di chiamate API Win32 diverse prima di mostrare anche la schermata di benvenuto!) Pertanto, per quei sistemi la memorizzazione nella cache del token a livello di servizio è fondamentale.
Ma finché viene utilizzata la copia cache, non viene ricontrollata per vedere se è stata successivamente invalidata. Potresti accedere a Facebook in preda al panico perché ti sei ricordato che ti sei lasciato loggato al coffee shop e hai impostato la bandiera, ma dovrai aspettare la scadenza della cache successiva prima che abbia effetto.
In un'applicazione di sicurezza elevata, è possibile che il tempo di scadenza venga abbassato. Suppongo che sia possibile che tu richieda che i tuoi servizi non eseguano la memorizzazione nella cache degli attributi delle credenziali e che tutti i token vengano sempre inviati al server di autenticazione. In un'applicazione a bassa sicurezza (forse un blog) probabilmente dare più valore a convenienza e prestazioni.
Dalla tua descrizione, sembra che Facebook abbia probabilmente un'integrazione personalizzata tra la loro gestione delle sessioni e i loro sistemi di credenziali. Se si seleziona il pulsante "disconnetti", è possibile che venga inviata una notifica al sistema di gestione delle sessioni per invalidare immediatamente tutte le sessioni associate al proprio account. Quale sarebbe intelligente e iper-veloce, ma non credo che i sistemi più autentici supportino le notifiche pub / sub come quella. Non sono a conoscenza di alcun servizio di callback offerto da Kerberos, ma penso che la prossima versione di Apache Directory Services offrirà "trigger", che sembrano essere usati allo stesso scopo.