Обновление токена с истекшим сроком действия (LifecycleAwareSessionManager)

Мы наблюдаем ситуацию, когда после сбоя обновления токена входа в систему из-за исключения времени ожидания подключения (подробнее см. Ниже), каждый последующий вызов Vault возвращает 403, возможно, потому, что токен с истекшим сроком действия передается в Vault.

Я смотрел на класс LifecycleAwareSessionManager и заметил, что новый логин () принудительно выполняется только для нулевого токена или когда клиент может подключиться к серверу и получает соответствующий http 4XX исключение (в потоке продления).

Но как насчет случая, когда клиент не смог подключиться к серверу Vault из-за тайм-аута подключения (в асинхронном потоке), поэтому для токена явно не установлено значение null, и поток обновления никогда не выполняется.

Я считаю, что, поскольку поток обновления никогда не выполняется или новый вход в систему не выполняется принудительно, клиент Vault Spring в нашем случае обращается в Vault с истекшим токеном и получает 403-е.

Не следует ли сбрасывать токен входа в систему для всех видов исключений, чтобы принудительно выполнить новый вход для последующих запросов в хранилище?

Мы находимся на 1.1.1.RELEASE.

"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)

person user1168577    schedule 21.02.2018    source источник
comment
вы нашли решение этой проблемы?   -  person Rockyboy_ruby    schedule 06.04.2018


Ответы (1)


На самом деле это ошибка библиотеки, исправленная в версии 1.1.2. Дополнительные сведения см. На GitHub.

person user1168577    schedule 06.04.2018