过期登录令牌刷新(LifecycleAwareSessionManager)

时间:2018-02-21 20:20:10

标签: spring-vault

我们看到一种情况是,由于Connect Timeout异常导致登录令牌续订失败(请参阅下面的详细信息),对Vault的每次后续调用都可能返回403,因为过期的令牌正在传递给Vault。 / p>

我正在查看 LifecycleAwareSessionManager 类,并注意到只有空令牌或客户端可以连接到服务器并且收到一个新的login()时适当的http 4XX例外(在续订流程中)。

但是,由于连接超时(在异步线程中)客户端无法连接到Vault服务器的情况如此,因此令牌未显式设置为null并且永远不会更新续订流。

我相信由于续订流程从未被命中或者没有强制进行新的登录,因此我们案例中的金库弹簧客户端使用过期的令牌访问Vault并获得403.

是否应该针对各种异常重置登录令牌,以强制为后续的Vault请求重新登录?

我们正在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)

1 个答案:

答案 0 :(得分:0)

这实际上是库中的一个错误,已在1.1.2中修复。有关详细信息,请参阅GitHub