Обновление маркера истекшего времени входа в систему (LifecycleAwareSessionManager)
Мы наблюдаем ситуацию, когда после сбоя обновления токена входа в систему из-за исключения Connect Timeout (подробнее см. Ниже), каждый последующий вызов Vault возвращает 403, возможно, из-за того, что токен с истекшим сроком передается в Vault.
Я просматривал класс LifecycleAwareSessionManager и заметил, что новый login() принудительно вводится только для нулевого токена или когда клиент может подключиться к серверу и получает соответствующее исключение http 4XX (в потоке обновления).
Но как насчет случая, когда клиент не смог подключиться к серверу Vault из-за тайм-аута соединения (в асинхронном потоке), поэтому токен не имеет явного значения NULL и поток обновления никогда не срабатывает.
Я полагаю, что поскольку поток обновления никогда не срабатывает или новый вход в систему не принудителен, в нашем случае клиент пружины хранилища запускает Vault с токеном с истекшим сроком действия и получает 403-е.
Не следует ли сбрасывать маркер входа для всех видов исключений, чтобы принудительно ввести новый вход в систему для последующих запросов Vault?
Мы на 1.1.1. ВЫПУСК.
"message": "Cannot renew VaultToken",
"logger_name": "org.springframework.vault.authentication.LifecycleAwareSessionManager",
"thread_name": "spring-vault-ThreadPoolTaskScheduler-1",
"stack_trace": "org.springframework.vault.VaultException: Cannot refresh token; nested exception is org.springframework.web.client.ResourceAccessException: I/O error on POST request for \"https://<server>:<port>/v1/auth/token/renew-self\": Connect to <server>:<port> failed: connect timed out; nested exception is org.apache.http.conn.ConnectTimeoutException
connect timed out\n\tat org.springframework.vault.authentication.LifecycleAwareSessionManager.renewToken(LifecycleAwareSessionManager.java:209)\n\tat org.springframework.vault.authentication.LifecycleAwareSessionManager$1.run(LifecycleAwareSessionManager.java:261)
1 ответ
На самом деле это ошибка в библиотеке, которая была исправлена в 1.1.2. Пожалуйста, смотрите GitHub для более подробной информации.