Настройка application.yml во время инициализации Spring - PullRequest
0 голосов
/ 21 апреля 2020

В моем профиле Spring у меня есть следующее свойство:

appname:
  token: '{cipher}xxx'

Указанный выше токен расшифровывается во время инициализации приложения с использованием следующего закрытого ключа RSA, который находится в application.yml. Этот закрытый ключ вводится из keyvault в форме, закодированной в Base64.

encrypt:
  key: ${RSA-KEY}

Приведенное выше дешифрование завершается со следующим сообщением

2020-04-08T16:03:02.01-0400 [APP/PROC/WEB/0] OUT java.lang.IllegalStateException: Cannot decrypt: key=appname.token
2020-04-08T16:03:02.01-0400 [APP/PROC/WEB/0] OUT    at org.springframework.cloud.bootstrap.encrypt.EnvironmentDecryptApplicationInitializer.decrypt(EnvironmentDecryptApplicationInitializer.java:201)
2020-04-08T16:03:02.01-0400 [APP/PROC/WEB/0] OUT    at org.springframework.cloud.bootstrap.encrypt.EnvironmentDecryptApplicationInitializer.decrypt(EnvironmentDecryptApplicationInitializer.java:165)
2020-04-08T16:03:02.01-0400 [APP/PROC/WEB/0] OUT    at org.springframework.cloud.bootstrap.encrypt.EnvironmentDecryptApplicationInitializer.initialize(EnvironmentDecryptApplicationInitializer.java:95)

В keyvault RSA-KEY устанавливается как Base64- закодированное значение. И вышеприведенное дешифрование завершается неудачно, потому что encrypt.key принимает значение в кодировке Base64. Если бы этот ключ использовался во время выполнения, я бы использовал java.util.Base64 для декодирования. Поскольку это дешифрование происходит во время инициализации приложения, я хотел бы знать, какие опции доступны для меня для декодирования Base64, прежде чем этот ключ будет использован для дешифрования. Просто интересно, есть ли хук, который позволил бы изменить объект, который читает / хранит значения в application.yml.

...