Зашифрованные свойства в Cloud Foundry с помощью Sping Boot
У меня есть приложение Spring Boot, в файле свойств которого есть зашифрованные значения, например
spring.security.user.password=ENC(ZUkuSkFAiu/k7v7G1538ouQmuSWeAuOucAVuvxLCDwwJ0mgnIdfl3N/RgiZMGeBm)
Я использую jasypt, чтобы расшифровать их на лету. Это отлично работает локально.
Однако, когда я развертываю приложение в Cloud Foundry, мой файл свойств теперь извлекает значение из переменных vcap env. например
spring.security.user.password=${vcap.services.myconfig.credentials.user.password}
в PCF значение добавляется как
user.password = ENC(ZUkuSkFAiu/k7v7G1538ouQmuSWeAuOucAVuvxLCDwwJ0mgnIdfl3N/RgiZMGeBm)
Однако теперь мое приложение не запускается, и я получаю сообщение об ошибке
ОШИБКА 22 --- [основная] osbweb.embedded.tomcat.TomcatStarter: Ошибка при запуске контекста Tomcat. Исключение:org.springframework.beans.factory.UnsatisfiedDependencyException. Сообщение: Ошибка создания bean-компонента с именем securityFilterChainRegistration, определенным в ресурсе пути к классу [org / springframework / boot / autoconfigure / security /servlet/SecurityFilterAutoConfiguration.class]: неудовлетворенная зависимость, выраженная через параметр 0 метода securityFilterChainRegistration; вложенное исключение - org.springframework.boot.context.properties.ConfigurationPropertiesBindException: ошибка при создании bean-компонента с именем «spring.security-org.springframework.boot.autoconfigure.security.SecurityProperties»: не удалось привязать свойства к «SecurityProperties»: prefix = spring .security, ignoreInvalidFields=false,ignoreUnknownFields=true;вложенное исключение - org.springframework.boot.context.properties.bind.BindException: не удалось привязать свойства в разделе 'spring.security.user.password' к java.lang.String
Есть ли причина, по которой мне не хватает, почему это работает локально, но не в Cloud Foundry?
1 ответ
Попробуйте один раз:
JAVA_OPTS=-Dspring.security.user.password=ENC\\(ZUkuSkFAiu/k7v7G1538ouQmuSWeAuOucAVuvxLCDwwJ0mgnIdfl3N/RgiZMGeBm\\)