16. 会话Tokens生命周期管理(续期、重新登录和撤销)

一个Vault会话Tokens(也称为 LoginToken)与租约很相似,因为它具有TTL、最大TTL,并且可能会过期。 一旦登录Tokens过期,就无法再使用它与Vault进行交互。 因此,Spring Vault提供了面向声明式和响应式使用的 SessionManager API。spring-doc.cadn.net.cn

Spring Cloud Vault 默认维护会话Tokens的生命周期。 会话Tokens是懒加载获取的,因此实际登录会延迟到首次使用与Vault绑定的会话时进行。 一旦Spring Cloud Vault获取到会话Tokens,它会保留该Tokens直到过期。 下一次使用与会话绑定的活动时,Spring Cloud Vault会重新登录到Vault并获取新的会话Tokens。 在应用程序关闭时,如果Tokens仍处于活动状态,Spring Cloud Vault会撤销该Tokens以终止会话。spring-doc.cadn.net.cn

会话生命周期默认启用,可通过将 false 设置为 spring.cloud.vault.session.lifecycle.enabled 来禁用。 禁用不被推荐,因为会话Tokens可能会过期,Spring Cloud Vault 将无法再访问 Vault。spring-doc.cadn.net.cn

spring.cloud.vault:
    session.lifecycle:
        enabled: true
        refresh-before-expiry: 10s
        expiry-threshold: 20s
  • enabled 控制是否启用会话生命周期管理以刷新会话Tokens。 默认启用。spring-doc.cadn.net.cn

  • refresh-before-expiry 控制会话Tokens在何时刷新。 刷新时间通过从Tokens过期时间减去 refresh-before-expiry 计算得出。 默认值为 5 secondsspring-doc.cadn.net.cn

  • expiry-threshold设置过期阈值。 该阈值表示考虑会话Tokens有效的最小TTL持续时间。 TTL较短的Tokens被视为已过期且不再使用。 应大于refresh-before-expiry以防止Tokens过期。 默认值为7 secondsspring-doc.cadn.net.cn