blo*_*low 12 java xml spring keystore password-encryption
有一种方法可以在xml spring配置文件中隐藏/加密密码吗?我读过可以使用DataSource的"自定义"子类,但解决方案将密钥保存在与纯文本相同的配置文件中......所以有点无用.
有一种方法可以使用KeyStore吗?例如,从密钥库中读取值.
谢谢大家.
ord*_*rig 12
隐藏密码的目的是什么?我建议你在容器中配置数据源(Tomcat,JBoss或你使用的任何东西),并使用jndi将数据源注入你的应用程序:
<jee:jndi-lookup id="thedatasource"
jndi-name="java:comp/env/jdbc/thedatasource"
lookup-on-startup="false"
expected-type="javax.sql.DataSource"/>
Run Code Online (Sandbox Code Playgroud)
这样,您不必在应用程序中公开密码,而只在servlet容器中公开密码.
Coo*_*ans 11
是的,你可以这样做.您必须在数据源类周围创建一个包装器bean.这是我以前如何做到的一个例子.希望这可以帮助!
<beans>
<bean id="someDao" class="com.dao.SomeDAOImpl">
<property name="datasource">
<ref local="secureDataSource"/>
</property>
</bean>
<bean id="secureDataSource" class="com.ds.SecureDataSource">
<property name="driverClassName">
<value><your driver></value>
</property>
<property name="url">
<value><your url></value>
</property>
<property name="username">
<value><your user id></value>
</property>
<property name="password">
<value><encrypted_pwd></value>
</property>
</bean>
</beans>
Run Code Online (Sandbox Code Playgroud)
然后在SecureDataSource类中,您需要解密密码.
import java.sql.Connection;
import java.sql.SQLException;
public class SecureDataSource extends DriverManagerDataSource{
private String url;
private String username;
private String password;
/**
* @param url the url to set
*/
public void setUrl(String url) {
this.url = url;
}
/**
* @param username the username to set
*/
public void setUsername(String username) {
this.username = username;
}
/**
* @param password the password to set
*/
public void setPassword(String password) {
this.password = password;
}
protected Connection getConnectionFromDriverManager() throws SQLException {
String decryptedPassword = null;
//decrypt the password here
return getConnectionFromDriverManager(url,username,decryptedPassword);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15980 次 |
| 最近记录: |