Saltar al contenido principal

TokenProvider

Proveedor de tokens con caché automático. Gestiona la obtención y renovación de tokens de forma transparente.

Thread-safe garantizado: usa el monitor del objeto para serializar todas las operaciones sobre el token cacheado. Esto evita la condición de carrera donde dos hilos podrían autenticarse simultáneamente.

Patrón: Synchronized Monitor + Supplier para lazy initialization

Metodos

getToken()

Obtiene el token actual. Si no existe en caché, autentica automáticamente.

Thread-safe: synchronized garantiza que solo 1 hilo autentica a la vez. Los hilos que esperan obtienen el token ya cacheado por el primero.

Retorna: Token de acceso (sin prefijo "Bearer")


invalidateToken()

Invalida el token actual, forzando una nueva autenticación en el próximo uso.

Thread-safe: synchronized garantiza que invalidar y leer el token son operaciones atómicas. No puede ocurrir que un hilo invalide mientras otro está autenticando.

Este método es llamado automáticamente cuando se detecta un error 401.


invalidateAndRefresh()

Invalida el token actual y obtiene uno nuevo de forma atómica.

Este método es la solución al problema de carrera entre múltiples hilos: Cuando varios hilos reciben 401 simultáneamente, todos llaman este método, pero solo el PRIMERO que adquiera el monitor autentica. Los demás esperan y obtienen el token ya renovado sin llamar al API de auth de nuevo.

Thread-safe: toda la operación (invalidar + autenticar) ocurre bajo el mismo lock, sin ventana de carrera posible.

Retorna: Nuevo token de acceso ya cacheado