java - Spring Mongo模板密码加密

标签 java spring mongodb

我正在为 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/

相关文章:

java - Android O - 后台服务限制未按预期工作

java - 如何替换 Android 的相机输入流?

node.js - 等待不是等待

mongodb - 我应该使用 "_id"中的时间戳吗?

c# - Json.NET 反序列化 Mongo ObjectId 给出了错误的结果

Java Applet 游戏设计 : Keyboard focus

java - 返回类的名称,它是一个 Pair<>

java - 没有任何注释和xml文件的Spring XD模块

java - hibernate/HSQLDB : User lacks priviledges to create constraints

Java spring @Value注解