首页 文章

在Spring 4 / Boot中完全集成加密属性

提问于
浏览
10

我们're using Jasypt to encrypt some config properties (database passwords) but since the decryption key is stored on each environment'的文件系统我们要做一些手工 @Bean 配置来从文件加载密码然后用 EncryptablePropertiesPropertySource 覆盖加载属性 .

因为它是如此手动,我们必须在 WebApplicationConfig 类的 @PostConstruct 中运行此代码并且(虽然这还没有发生)但是在数据源bean配置了对 Environment 的调用之后,它会冒着加载这些代码的风险 - 给出null指针异常 . @Lazy 加载将是一个选项,但显然这意味着我们想要避免 .

最终我们希望能够使用默认的 classpath:application.properties ,所以不要影响现有(默认)设置,但我们确实希望能够使用加密属性源作为Spring的完全替代,并拥有Spring在发生任何其他事情之前从文件加载解密代码 . 有没有办法在应用程序启动和配置早期更紧密地集成加载加密属性?

2 回答

  • 2

    我正在“剪裁”我之前的答案,因为它被删除,因为它是一个不同的问题重复:

    这个库完全符合您的需要jasypt-spring-boot,它基本上允许您使用@PropertySource批注以您习惯的方式定义属性 . 您只需要在配置文件中添加一个额外的注释(@EnableEncryptableProperties) . 它不仅限于此,环境中存在的每个PropertySource都将转换为EncryptablePropertySourceWrapper,这是一个自定义包装器,用于检查属性何时加密并在访问时对其进行解密 .

  • 10

    遗憾的是,评论部分中提供的链接Dave现在没有任何结果,但是从它的根导航我得到了以下示例项目:https://github.com/spring-cloud-samples/configserver(当然也主要由Dave编写)

    我认为这是迄今为止评论中讨论的内容的一个很好的例子 .

    此外,为了将来参考(可能会在某些时候完成),还有一个Spring Framework Jira票证,用于使用加密属性的功能:https://jira.spring.io/browse/SPR-12420

相关问题