当前位置: 首页 > 知识库问答 >
问题:

Spring4/Boot中加密属性的完全集成

曾山
2023-03-14

我们使用Jasypt加密一些配置属性(数据库密码),但由于解密密钥存储在每个环境的文件系统中,因此我们必须手动进行@bean配置以从文件中加载密码,然后用EncryptablePropertiesPropertySource覆盖加载属性。

因为它是手动的,所以我们不得不在WebApplicationConfig类的@postConstruct中运行这段代码,并且(尽管这还没有发生)在使用对Environment的调用配置数据源bean之后,可能会加载这些代码--给出空指针异常。@lazy加载将是一个选项,但显然这意味着我们将使用脆弱的配置,这是我们希望避免的。

最终,我们希望能够使用默认的类路径:application.properties所以不希望影响现有的(默认)设置,但是我们确实希望能够使用一个可加密的属性源作为Spring属性源的完全替换,并且在发生其他事情之前让Spring从文件中加载解密代码。有没有一种方法可以在应用程序启动和配置的早期更紧密地集成加载可加密属性?

共有1个答案

李成礼
2023-03-14

我正在“剪裁”我以前的回答,因为它被删除了,因为它是从一个不同的问题:

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

 类似资料:
  • 我做了第一次测试。1.我在ApplicationMain.java中使用了@PropertySource(“classpath:sampleservices.yml”)或@PropertySource(“classpath:sampleservices.properties”)。2.我将ENC()密码保存在一个单独的文件(sampleservices.yml或sampleservices.prop

  • 问题内容: 我正在寻找一种加密Java程序正在读取的配置文件中的密码的方法。目前,我从文本文件中读取了密码,但是如果有人要查看配置文件,那将使密码一直处于开放状态。 我正在考虑构建一个简单的类,其中用户可以输入所需的密码,获得密码的加密版本,然后将加密版本粘贴到配置文本文件中。然后,应用程序将读取加密的密码,将密码解密回字符串,然后继续。 我在使用字符串->加密字节->字符串转换时遇到了麻烦。 我

  • 在这种情况下,我的问题是如何设置-D属性,例如。 此外,如果服务器不安装jdk,这个完全可执行的jar还能运行吗?

  • > 此代码在Spring5中工作。但我的公司需要Spring 4。 在Spring4中,login与InMemoryAuthentication一起工作很好。但是当我添加了jdbc逻辑(c3p0,MySQL依赖关系&add DataSource代码&jdbc连接,c3p0连接池.properties文件);服务器运行,登录页打开,但身份验证失败(用户名/密码不正确)。 下面是包结构 null 公共

  • 我在尝试在Spring Boot应用程序中启用全局方法安全性时遇到了一些问题。或多或少我有这样的配置: @Secure注释在服务中工作正常,但在控制器中不行,所以我读到这里(http://docs.spring.io/spring-security/site/faq/faq.html#faq-method-security-in-web-context)我认为这是因为方法安全性只在根应用程序上下文

  • 本文向大家介绍DBMS中的安全性,完整性和授权,包括了DBMS中的安全性,完整性和授权的使用技巧和注意事项,需要的朋友参考一下 数据库安全性数据库安全性具有许多不同的层,但是关键方面是: 认证方式 用户身份验证是为了确保访问数据库的人是他声称的身份。身份验证可以在操作系统级别甚至数据库级别本身进行。许多身份验证系统(例如视网膜扫描仪或生物识别技术)用于确保未经授权的人员无法访问数据库。 授权书 授