16. 会话Tokens生命周期管理(续订、重新登录和撤销)
Vault 会话Tokens(也称为LoginToken
) 与租约非常相似,因为它具有 TTL、最大 TTL,并且可能会过期。
登录Tokens过期后,它就不能再用于与 Vault 交互。
因此, Spring Vault 附带了SessionManager
用于命令式和响应式使用的 API。
Spring Cloud Vault 默认维护会话Tokens生命周期。 会话Tokens是延迟获取的,因此实际登录被推迟到第一次会话绑定使用 Vault 时。 一旦 Spring Cloud Vault 获得会话Tokens,它就会保留它直到到期。 下次使用 session-bound 活动时, Spring Cloud Vault 会重新登录到 Vault 并获取新的会话Tokens。 在应用程序关闭时, Spring Cloud Vault 如果Tokens仍处于活动状态以终止会话,则 Spring Cloud Vault 会撤销Tokens。
会话生命周期默认处于启用状态,可以通过设置spring.cloud.vault.session.lifecycle.enabled
自false
.
不建议禁用,因为会话Tokens可能会过期,并且 Spring Cloud Vault 无法再访问 Vault。
spring.cloud.vault:
session.lifecycle:
enabled: true
refresh-before-expiry: 10s
expiry-threshold: 20s
-
enabled
控制是否启用会话生命周期管理以续订会话Tokens。 默认启用。 -
refresh-before-expiry
控制续订会话Tokens的时间点。 刷新时间的计算方法是减去refresh-before-expiry
从Tokens到期时间开始。 默认为5 seconds
. -
expiry-threshold
设置 过期阈值。 阈值表示将会话Tokens视为有效的最小 TTL 持续时间。 TTL 较短的Tokens被视为过期,不再使用。 应大于refresh-before-expiry
以防止Tokens过期。 默认为7 seconds
.