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,它就会保留它直到到期。 下次使用会话绑定活动时,Spring Cloud Vault 会重新登录到 Vault 并获取新的会话Tokens。 在应用程序关闭时,如果Tokens仍然处于活动状态,Spring Cloud Vault 会撤销Tokens以终止会话。spring-doc.cadn.net.cn

会话生命周期默认启用,可以通过设置spring.cloud.vault.session.lifecycle.enabledfalse. 不建议禁用,因为会话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续订的时间点。 刷新时间的计算方法是减去refresh-before-expiry从Tokens到期时间开始。 默认为5 seconds.spring-doc.cadn.net.cn

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