【发布时间】: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