我在项目中,一些开发人员可以读取加密属性,有些则不读取。我需要像
这样的东西<properties>
<database.password>someHash</database.password>
</property>
然后在配置文件中使用我想要的过滤(@是由于Spring Boot):
password=@database.password@
属性文件将在编译期间编译为:
password=superSecretPassword
我认为Maven Password Encryption会有所帮助,但经过一些尝试,我无法像这样工作。 我还发现Properties maven plugin,但也没有成功实现所需的解决方案。
您是否有一些方法如何将加密属性存储到pom.xml中,然后在输入密码后在编译期间解密它们?
答案 0 :(得分:1)
当@Tunaki指出时,你应该避免在你的pom或源代码中的任何地方使用密码。获取加密凭据的一种方法是创建Springs PropertySourcesPlaceholderConfigurer的自定义实现。
然后,您可以覆盖postProcessBeanFactory()以执行凭据属性文件的加密/解密。在解密期间,您只需使用解密的属性值调用setProperties()即可。在spring配置中,您将使用属性占位符而不是纯文本属性值。
请注意,您需要使用双向加密方案而不是消息摘要(或散列函数),因为您需要恢复纯文本凭据才能创建数据库连接。