Jasypt не может расшифровать пароль
Я пытаюсь расшифровать пароль с помощью jasypt, где пароль передается в качестве аргумента виртуальной машины. XML-файл, который использует это выглядит следующим образом -
<bean id="strongEncryptor"
class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config">
<bean class="org.jasypt.encryption.pbe.config.SimpleStringPBEConfig"
p:algorithm="PBEWithMD5AndDES" p:password="#{systemProperties['jasypt.encryptor.password']}"
p:providerClassName="org.bouncycastle.jce.provider.BouncyCastleProvider"/>
</property>
</bean>
<bean id="propertyConfigurer" p:ignoreResourceNotFound="true" p:nullValue="{null}"
class="org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer">
<constructor-arg ref="strongEncryptor" />
<property name="locations">
<list>
<value>file:#{systemProperties['appconfig.dir']}/farms/local-testing/application.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"></property>
</bean>
Вот если я не напишу <property name="ignoreUnresolvablePlaceholders" value="true">
тогда я получаю ошибки, такие как различные свойства, не определенные, однако они определены в base\application.properties
,
Аргументы VM предоставляются как
-Dspring.config.location=appconfig/base/,appconfig/farms/local-testing/ -Dappconfig.dir=/opt/apps/globalpayments/svx/appconfig -Djasypt.encryptor.password=randompassword
Не в состоянии понять, что здесь происходит.
Также одна важная вещь здесь - если я не предоставляю аргументы VM, тогда он должен игнорировать это и предоставлять зашифрованное значение в виде строки вместо расшифрованного значения.
Любые указатели будут полезны.
Заранее спасибо.
1 ответ
Как насчет того, чтобы сделать как ниже Я разделил переменные среды config и encryptor и удалил некоторые атрибуты, потому что я не понимаю, для чего они. Обратите внимание, что вам нужно передать "jasypt_encryptor_password" как переменную "Environment", а не аргумент VM.
<bean id="envVarConfig"
class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor" p:algorithm="PBEWithMD5AndDES" p:password="jasypt_encryptor_password" p:providerClassName="org.bouncycastle.jce.provider.BouncyCastleProvider" />
<bean id="configEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor" p:config-ref="envVarConfig" />
<bean id="propertyConfigurer" class="org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer">
<constructor-arg ref="configEncryptor" />
<property name="locations">
<list>
<value>file:///${appconfig.dir}/farms/local-testing/application.properties</value>
</list>
</property>
</bean>
Надеюсь, это работает для вас.