使用 Spring-security 加密和解密密码
Password encrypt and decrypt using Spring-security
前言:我有一个使用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
,然后 运行 下面的命令通过 [= 注入属性文件18=]命令如下
java -server -jar ${jarName}
--spring.config.location=./config.properties
问题:如何在spring应用程序中加密和解密String/password?
我想将密码存储在加密格式的属性文件中,然后通过我的代码对其进行解密并连接到 Oracle 数据库和我的应用程序。
通常,这些类型的配置文件应该列在 .gitignore 中,而不是推送到存储库。此外,如果你想加密然后再次解密它们,无论如何都没有理由推送它们。但是,如果存在通用配置,您可能希望推送该配置并将凭证存储在另一个未推送的文件中。
一个例子:
application.properties
: 您希望推送到存储库的公共属性
database.properties
: 在本地机器上保密的属性
.gitignore
database.properties
然后你可以使用Spring注解在运行时加载属性个文件。
@PropertySource(value = { "application.properties", "database.properties" })
一般我都是把这种配置放在服务器的环境变量里。
您可以将 application.properties 中的密码替换为 ${MY_PASSWORD},然后将密码放入环境变量中(对 docker 非常有帮助)。
您还可以使用两个文件,一个是应用程序-dev.properties,其中包含您的开发数据库密码,另一个是应用程序-prod.properties,其中包含对环境变量的引用,使开发更容易。
我将应用程序用户名和密码存储在服务器的文本文件中。然后我使用一个插件来加密和解密它们并在我的应用程序中使用。这样我就可以将整个代码签入 git ,它根本没有密码..
前言:我有一个使用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
,然后 运行 下面的命令通过 [= 注入属性文件18=]命令如下
java -server -jar ${jarName}
--spring.config.location=./config.properties
问题:如何在spring应用程序中加密和解密String/password?
我想将密码存储在加密格式的属性文件中,然后通过我的代码对其进行解密并连接到 Oracle 数据库和我的应用程序。
通常,这些类型的配置文件应该列在 .gitignore 中,而不是推送到存储库。此外,如果你想加密然后再次解密它们,无论如何都没有理由推送它们。但是,如果存在通用配置,您可能希望推送该配置并将凭证存储在另一个未推送的文件中。
一个例子:
application.properties
: 您希望推送到存储库的公共属性database.properties
: 在本地机器上保密的属性
.gitignore
database.properties
然后你可以使用Spring注解在运行时加载属性个文件。
@PropertySource(value = { "application.properties", "database.properties" })
一般我都是把这种配置放在服务器的环境变量里。 您可以将 application.properties 中的密码替换为 ${MY_PASSWORD},然后将密码放入环境变量中(对 docker 非常有帮助)。
您还可以使用两个文件,一个是应用程序-dev.properties,其中包含您的开发数据库密码,另一个是应用程序-prod.properties,其中包含对环境变量的引用,使开发更容易。
我将应用程序用户名和密码存储在服务器的文本文件中。然后我使用一个插件来加密和解密它们并在我的应用程序中使用。这样我就可以将整个代码签入 git ,它根本没有密码..