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