我正在为 Mongo 数据库服务器使用 spring mongo 模板,我需要在属性文件中加密密码并在 Mongo 模板中解密
我正在使用 UserCredentials 类来传递用户名和密码。
任何人都可以帮助如何覆盖这个类来解密加密的密码并传递到 Mongo 模板中
<bean id="simpleJdbcTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongo" ref="mongo"/>
<constructor-arg name="databaseName" value="mooadmin"/>
<constructor-arg name="userCredentials" ref="mongoCredentials"/>
</bean>
<!-- Factory bean that creates the Mongo instance -->
<bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean">
<property name="host" value="${mongo.server}"/>
<property name="port" value="${mongo.port}"/>
</bean>
<bean id="mongoCredentials"
class="org.springframework.data.authentication.UserCredentials">
<constructor-arg name="username" value="${mongo.username}" />
<constructor-arg name="password" value="${mongo.password}" />
</bean>
最佳答案
加密/解密机制见这里:Java 256-bit AES Password-Based Encryption
假设你已经知道如何根据上面的链接解密字符串,你可以简单地覆盖 UserCredentials 类的密码 getter
package com.mycompany;
// imports..
public class UserCredentials extends org.springframework.data.authentication.UserCredentials {
private String decrypt(String encryptedStr) {
// your decryption code goes here...
}
@Override
public String getPassword() {
return decrypt(super.getPassword());
}
}
将加密的密码放在您的属性文件中,并在您的 spring xml 配置文件中设置 UserCredentials 子类:
<bean id="mongoCredentials"
class="com.mycompany.UserCredentials">
<constructor-arg name="username" value="${mongo.username}" />
<constructor-arg name="password" value="${mongo.encryptedPassword}" />
</bean>
关于java - Spring Mongo模板密码加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18370305/