【问题标题】:Encrypting a password within a Spring configuration file在 Spring 配置文件中加密密码
【发布时间】:2013-12-07 15:11:37
【问题描述】:

我有一个 Spring bean,它使用用户名/密码作为其构造函数参数的一部分:

<bean id="mysender" class="org.springframework.ws.transport.http.CommonsHttpMessageSender">
         <property name="c">
             <bean class="org.apache.commons.httpclient.UsernamePasswordCredentials">
                 <constructor-arg value="plaintext"/>
                 <constructor-arg value="plaintext"/>
             </bean>
         </property>
     </bean>

我可以使用 jasypt 仅从配置文件中加密这些参数吗? bean "org.apache.commons.httpclient.UsernamePasswordCredentials" 将使用纯文本值进行实例化,但对用户而言,它们将被加密。

我可以使用以下答案使用核心 java 库代码:Encrypt Password in Configuration Files? 并从 java 中手动创建 bean mysender,然后在实例化 org.apache.commons.httpclient.UsernamePasswordCredentials 之前删除字段

或者有没有我没有提到的尝试过的方法可以实现这个?

【问题讨论】:

  • 您想要这样做的原因是什么?密码是否会在每次安装时更改,还是类似于整个应用程序的 API 密钥?
  • @chrylis 要求明文凭据不要存储在配置文件中。密码将根据每个安装更改
  • 但是将它们外部化到属性文件或 JNDI 中没有意义吗?
  • @chrylis 我不确定我是否关注。也许它没有意义,但这是实现,是我必须遵循的一个
  • 你能使用JavaConfig语法吗?编写一个将加密值(也可能是密钥)作为输入、解密密码并构造客户端对象的方法将非常容易。

标签: java spring encryption jasypt


【解决方案1】:

是的,jasypt 可以处理这个问题。见

http://www.algowise.com/2013/04/encrypting-passwords-using-jasypt-in.html

【讨论】:

  • 当我在网上搜索这个确切的问题时,jasypt.org/spring3.html 的 Jasypt 用于 Spring 集成的文档是这个 SO 问题之前的结果。它们非常直接和全面。我自己,我将按照第二部分的说明走“外部化到属性文件”路线。除了使用环境变量来存储加密密码之外,其他 Jasypt 文档还提供了有关不同 PBE 配置的详细信息。
猜你喜欢
  • 2010-11-11
  • 2011-03-19
  • 1970-01-01
  • 2021-11-13
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
  • 2013-04-16
相关资源
最近更新 更多