我正在尝试让我的 Spring Cloud Config Server 处理加密值,但到目前为止收效甚微。
我创建了一个最小的应用程序,其中包含一个从配置中返回值的 Controller 。
@RestController
public class DemoController {
private ConfigContainer config;
@Autowired
public DemoController(ConfigContainer config) {
this.config = config;
}
@GetMapping(value = "/getdata")
public String getData() {
return config.getValue();
}
}
ConfigContainer 通过 @Autowired 构造函数获取值,我在使用和不使用 @RefreshScope 注释的情况下尝试了此操作。
在配置服务器端,我有 keystore 、无限强度 JCE 和以下 bootstrap.yml
spring.cloud.config.server:
git.uri: https://my-git.server/repo
encrypt.enabled: true
encrypt:
key-store:
location: classpath:/server.jks
password: password
alias: alias
secret: secretvalue
git 存储库包含一个带有值的 yml
value: '{cipher}AQCbwJFxL/ebeWYHhLhYM ... bj4CtHuo='
使用配置服务器的解密端点解密该值按预期工作,但是当我在演示应用程序中使用该值时,我只是获得了删除了 {cipher} 标记的加密值。当我将标签后面的值更改为无法解密的值时,配置中没有错误,也没有“无效”值,如文档中提到的。配置服务器的日志文件非常安静且非决定性的。 当我使用浏览器从配置服务器查询配置时,我也看到了相同的标记剥离值。
我使用的是 Cloud Config Server 1.4.0.RELEASE
最佳答案
按照评论中要求的快速入门,我得到了一个有效的快速入门。将其重新集成到应用程序中仅给出空白和注释更改以及工作应用程序...问题很可能是由以前版本的工件引起的...
关于java - Cloud Config Server 不会解密值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50580585/