No hay un solo consejo porque varias aplicaciones tienen diferentes requisitos.
La mayoría de las credenciales se manejan en forma de tokens. Usted se autentica en un servidor, devuelve un token, almacena el token y lo pasa a cada sistema con el que está tratando. El token podría ser de cualquier forma: una cookie, un ID de sesión, un ticket Kerberos, un token NTLM o lo que sea. El cliente lo almacena en un caché local y lo presenta cada vez que utiliza un servicio que necesita conocer sus credenciales.
Entonces, lo siguiente que usted (como cliente) desea hacer es acceder a algún servicio. Presenta el token, el servicio llama al servidor de autenticación, determina sus grupos / roles / autoridad, aprende el tiempo de caducidad de su token y le otorga acceso. Luego, el servicio simplemente almacena en caché su token y todos esos atributos, luego compara cada solicitud entrante para ver si todavía está usando el mismo token. No vuelve a validar su token hasta el tiempo de caducidad indicado por el servidor de autenticación.
En una aplicación de servicio intensivo, tendría problemas de rendimiento si le pidiera al servidor de autenticación que autentique cada solicitud de servicio. (¡Considere que una aplicación típica de Windows podría presentar el token de seguridad a una docena de diferentes llamadas a la API de Win32 incluso antes de mostrarle la pantalla de "bienvenida"!) Por lo tanto, para esos sistemas, almacenar el token en el nivel de servicio es fundamental.
Pero mientras se use la copia en caché, no se volverá a comprobar para ver si se ha invalidado posteriormente. Podría iniciar sesión en Facebook en estado de pánico porque recordó que se había dejado conectado en la cafetería y estableció la bandera, pero tendrá que esperar a la próxima caducidad del caché antes de que surta efecto.
En una aplicación de alta seguridad, puede reducir el tiempo de caducidad. Supongo que es posible que requiera que sus servicios no realicen el almacenamiento en caché de los atributos de credenciales, y que todos los tokens siempre se envíen al servidor de autenticación. En una aplicación de baja seguridad (tal vez un blog), probablemente le daría más valor a la conveniencia y al rendimiento.
Según su descripción, parece que Facebook probablemente tenga una integración personalizada entre la gestión de sus sesiones y sus sistemas de credenciales. Si marca el botón "cerrar sesión", puede enviar una notificación al sistema de administración de sesión para invalidar inmediatamente todas las sesiones asociadas con su cuenta. Lo que sería inteligente e hiper-rápido, pero no creo que la mayoría de los sistemas de autenticación admitan notificaciones de publicación / sub como esas. No tengo conocimiento de ningún servicio de devolución de llamada ofrecido por Kerberos, pero creo que la próxima versión de Apache Directory Services ofrecerá "activadores", que suenan como si se usaran para el mismo propósito.