Я пытаюсь заставить мой Spring Cloud Config Server обрабатывать зашифрованные значения, но пока без особого успеха.
Я создал минимальное приложение, которое содержит контроллер, возвращающий значение из конфигурации.
@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 и без нее.
На стороне сервера конфигурации у меня есть хранилище ключей, неограниченная сила 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