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,它就会保留它直到到期。 下次使用 session-bound 活动时, Spring Cloud Vault 会重新登录到 Vault 并获取新的会话Tokens。 在应用程序关闭时, Spring Cloud Vault 如果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