【问题标题】:Password encrypt and decrypt using Spring-security使用 Spring-security 进行密码加密和解密
【发布时间】:2018-12-10 10:03:56
【问题描述】:

前言:我有一个使用spring-boot(maven 项目)开发的JAR。然后,我将访问我的 JAR 文件夹并运行以下命令来执行它:

java -server -jar ${jarName}
--spring.config.location=classpath:config.properties

所以我的 JAR 从属性文件中读取 {key, value} 对并相应地执行代码。这没有问题,但我的config.properties 文件中几乎没有属性,其中包含直接连接到Oracle 数据库的数据库详细信息。它还有我的应用程序超级管理员用户名和密码。

我不想将此代码推送到bit-bucket/stash/git,因为其中存储了我所有的密码。

解决方法:我可以使用空密码将我的代码推送到git/stash,然后运行以下命令通过--spring.config.location 命令注入属性文件,如下所示

java -server -jar ${jarName}
--spring.config.location=./config.properties

问题:如何在spring应用中对String/密码进行加解密?

我想将密码以加密格式存储在属性文件中,然后通过我的代码解密并连接到 Oracle 数据库和我的应用程序。

【问题讨论】:

    标签: java spring spring-boot spring-security spring-boot-maven-plugin


    【解决方案1】:

    通常,这些类型的配置文件应该列在 .gitignore 中,而不是推送到存储库。此外,如果您想加密然后再次解密它们,无论如何都没有理由推送它们。但是,如果有一个通用配置,您可能希望将其推送并将凭证存储在另一个未推送的文件中。

    一个例子:

    • application.properties:您希望推送到存储库的常用属性
    • database.properties: 属性要保密并在本地机器上

    .gitignore

    database.properties
    

    然后就可以使用Spring注解在运行时加载属性文件了。

    @PropertySource(value = { "application.properties", "database.properties" })
    

    【讨论】:

    • 如果你能提供一个具体的例子,那将是 GREAT
    • @DforTye 我已经进行了编辑,但您到底需要什么?
    • 谢谢.. 我最终得到了这个解决方案
    【解决方案2】:

    通常,我将这种配置放在服务器的环境变量中。 您可以将您的 application.properties 中的密码替换为 ${MY_PASSWORD},然后将密码放入环境变量中(对 docker 很有帮助)。

    您还可以使用两个文件,一个带有您的开发数据库密码的 application-dev.properties 和一个带有环境变量引用的 application-prod.properties,以简化开发。

    【讨论】:

    • 谢谢.. 第一种方法对我不起作用,第二种方法不太可行。 :)
    【解决方案3】:

    我将应用程序用户名、密码存储在服务器的文本文件中。然后我使用一个插件来加密和解密它们并在我的应用程序中使用。这样我就可以将整个代码签入到 git 中,它根本没有密码..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      相关资源
      最近更新 更多