0

我们看到在登录令牌更新失败后由于连接超时异常(有关更多详细信息,请参见下文)的情况,每次对 Vault 的后续调用都返回 403,可能是因为过期的令牌正在传递给 Vault。

我正在查看LifecycleAwareSessionManager类,并注意到仅在空令牌或客户端可以连接到服务器并接收到适当的 http 4XX 异常(在续订流程中)时才强制使用新的 login()。

但是如果客户端由于连接超时(在异步线程中)而无法连接到 Vault 服务器,那么令牌没有显式设置为 null 并且永远不会命中续订流程。

我相信,由于更新流程永远不会被击中或没有强制新登录,所以在我们的例子中,Vault Spring 客户端使用过期令牌访问 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)
4

1 回答 1

0

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

于 2018-04-06T17:14:02.347 回答