1

我正在为 Mongo db 服务器使用 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>
4

1 回答 1

3

有关加密/解密机制,请参见此处:Java 256-bit AES Password-Based Encryption

假设您已经知道如何根据上面的链接解密字符串,您可以简单地覆盖 UserCredentials 类的密码获取器

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>
于 2013-08-22T06:16:01.983 回答