我正在将Spring Boot应用程序转换为使用Spring Cloud Config(SCC)。我想将其与GIT和VAULT后端一起使用。这很容易设置,并且在客户端应用程序调用保险柜令牌以获取属性时可以通过接受保险柜令牌来实现。
这对我来说不起作用,因为我们的保管库令牌在短暂的TTL之后失效。
我想要一个允许我们重新启动应用程序的解决方案,当这种情况发生时,他们只需调用SCC并获取其所有道具(包括来自Vault的机密)即可。由于我们在VAULT应用程序中使用了approle,这进一步混淆了这一点。尽管有办法,我们的秘密令牌也会更改并超时。
我要构建的东西是我们所有客户端应用中的一些东西,它们将与保险柜一起跳舞以获取我们的approle令牌或常规令牌(均可通过2个简单的POST方法实现到Vault),然后将该令牌传递给调用获取属性时,请转到SCC客户端代码。
这很难,但不是超级难。它需要侵入Spring Boot引导上下文(请参见https://cloud.spring.io/spring-cloud-commons/1.3.x/multi/multi__spring_cloud_context_application_context_services.html#_customizing_the_bootstrap_configuration)或侵入SCC本身。
如果我深入研究SCC github(https://github.com/spring-cloud/spring-cloud-config),则会发现当SCC客户端调用服务器获取属性时,对org.springframework.cloud.config.client.ConfigClientClientProperties的调用非常清晰。
我的想法是,我可以使用自己的类覆盖此类,以便当SCC使用ConfigClientProperties.getToken()请求保险库令牌时,我可以调用保险库,然后动态获取令牌。
我只是不知道如何优雅地重写此类。
我的问题分为两个相关部分:
1)这是完成此任务的最佳方法吗? 2)如何将自己的动态配置类完全注入SCC客户端?
谢谢!