【问题标题】:Hide passwords in application properties of Spring boot application在 Spring Boot 应用程序的应用程序属性中隐藏密码
【发布时间】:2018-12-13 15:28:45
【问题描述】:

每当出现在应用程序属性文件中隐藏密码等字段的问题时,直接的答案是使用 jasypt 或其他加密方式对这些详细信息进行加密。 如果您将加密的密码和 jasypt 详细信息保存在同一个文件中,这有什么意义?或者可能将它们保存在不同的文件中..

还有其他更聪明的方法吗?

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    您不应该将加密密钥保存在application.properties 中,毕竟您不希望它进入您的存储库。您必须在运行应用程序时提供密钥,方法是键入它或将其存储在服务器上的某个位置。查看this 线程中的示例。

    【讨论】:

      【解决方案2】:

      假设您在典型的 application.properties 文件中获取了密码。使用 Jaspyt,您可以进行如下加密:

      • Maven setup....获取最新的spring boot starter Jasypt POM,使用 com.github.ulisesbocchio 作为组 ID。
      • 创建一个小型实用程序类(最好在您的 Spring Boot 应用程序之外)来加密您的密码;使用 Jasypt 的 BasicTextEncryptor 类很容易:

        BasicTextEncryptor pwdEncrypt = new BasicTextEncryptor(); 
        pwdEncrypt.setPassword(your_secret_sauce)//whatever you use here will be needed in the properties file (more on that later)
        String encoded = pwdEncrypt.encrypt(password_you_want_to_encrpyt);
        
      • 字符串 encoded 默认是 PBE 编码的;抓住那个

      • 在您的属性文件中,输入以下条目:

        jasypt.encryptor.password=your_secret_sauce //used in your utility
        password_entry_you_want_to_encrypt=ENC(encoded) //encoded grabbed from your utility class
        
      • 我假设您正在用 @SpringBootApplication。同时添加以下注释:

        @EnableEncryptableProperties
        @PropertySource(name="EncryptedProperties", value = "classpath:application.properties")
        

      【讨论】:

        【解决方案3】:

        使用jasypt 加密application.properties 文件中的属性。
        它使用PBEWithMD5AndDES 进行加密。
        看: https://github.com/ulisesbocchio/jasypt-spring-boot

        【讨论】:

          猜你喜欢
          • 2020-06-11
          • 2018-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-03
          • 2020-03-11
          • 1970-01-01
          • 2015-11-21
          相关资源
          最近更新 更多