springBoot配置文件设置mongodb连接密码加密

  • 方案
  • 实践
    • pom文件引入依赖
    • application.yml文件中定义加密的秘钥
    • 定义main函数测试加解密
    • 把加密后的密码放置到MongoDB的properties配置文件中
    • 新增MongoDB配置文件
    • springBoot启动类上把自动加载的MongoDB配置类排除
    • 启动测试

方案

1、对明文密码加密
2、自定义MongoDB配置文件,在获取密码的时候解密。

实践

pom文件引入依赖


<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.6.6</version>
</dependency>

application.yml文件中定义加密的秘钥

# --spring.profiles.active=prod
spring:profiles:active: devencryption:key: fjk.fdhtpwDF.GHF

定义main函数测试加解密

    public static void main(String[] args) {byte[] bytes = "fjk.fdhtpwDF.GHF".getBytes(StandardCharsets.UTF_8);SymmetricCrypto aes=new SymmetricCrypto(SymmetricAlgorithm.DES,bytes);String testStr = aes.encryptBase64("admin");System.out.println("testStr:"+testStr);String s = aes.decryptStr(testStr);System.out.println("s:"+s);}

把加密后的密码放置到MongoDB的properties配置文件中

mongodb.uri=192.xxx.xx.xx:27017
mongodb.username=mcsas
#加密后的密码
mongodb.password=rd4ytDko8pE=
mongodb.schema=mcsas

新增MongoDB配置文件

package com.xxx.framework.galaxy.apower.config;import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
import cn.hutool.crypto.symmetric.SymmetricCrypto;
import com.mongodb.MongoClientURI;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets;@Configuration
@PropertySource(value = "classpath:database.properties",ignoreResourceNotFound = true)
public class MongoDBConfig {@Value("${mongodb.schema}")private String databaseName;@Value("${mongodb.uri}")private String uri;@Value("${mongodb.username}")private String userName;@Value("${mongodb.password}")private String password;@Value("${encryption.key}")private String key;@Beanpublic MongoDbFactory mongoDbFactory() throws UnknownHostException {//解密passwordbyte[] bytes = key.getBytes(StandardCharsets.UTF_8);SymmetricCrypto aes=new SymmetricCrypto(SymmetricAlgorithm.DES,bytes);String pwd = aes.decryptStr(password);String uriStr="mongodb://"+userName+":"+pwd+"@"+uri+"/"+databaseName;System.out.println("MongonDB Connction Info >>>>>>>>>>>>>>>>\t"+uriStr);MongoClientURI mongoClientURI=new MongoClientURI(uriStr);MongoDbFactory mongoDbFactory=new SimpleMongoDbFactory(mongoClientURI);return mongoDbFactory;}@Beanpublic MongoTemplate mongoTemplate() throws UnknownHostException {MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory());return mongoTemplate;}
}

springBoot启动类上把自动加载的MongoDB配置类排除

package com.xxx.framework.galaxy.xx;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
import org.springframework.boot.web.server.ConfigurableWebServerFactory;
import org.springframework.boot.web.server.ErrorPage;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.http.HttpStatus;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;@EnableAsync
@EnableScheduling
@SpringBootApplication(exclude = MongoDataAutoConfiguration.class)
public class APowerApplication {public static void main(String[] args) {SpringApplication.run(APowerApplication.class, args);}
}

启动测试

连接为解密密码后的。

springBoot配置文件设置mongodb连接密码加密相关推荐

  1. SpringBoot集成Druid和数据库密码加密

    Druid是阿里开发的数据库连接池,通过简单的配置,可以实现数据库的连接,性能特别强大,可以在页面访问,包括监控数据库性能参数,慢SQL统计,当然还包括数据库连接等. 今天主要记录一下SpringBo ...

  2. 使用druid 数据池对连接密码加密

    使用druid 数据池对连接密码加密 1.使用maven导入druid的jar包 <!-- https://mvnrepository.com/artifact/com.alibaba/drui ...

  3. SpringBoot+2次MD5登录密码加密+MyBatisPlus+Thymeleaf+Bootstrap简单实现登录功能,一文轻松搞定!

    这里写目录标题 一.演示GIF 二.开发前期准备 1.数据库 2.依赖POM.XML 3.idea结构目录 三.后端 1.实体类 2.mapper接口 3.mapper.xml 4.Servicce接 ...

  4. springboot+druid+dynamic-datasource+mysql数据库密码加密

    背景 生产环境中, 希望将数据库密码加密, 甚至用户名加密.druid自带了数据库密码加密功能. springboot+druid-starter实现密码加密 获取公钥和加密密码.这里使用druid- ...

  5. mysql连接密码加密_数据库连接用户名和密码加密

    我们的工程项目往往是使用云数据库的,连接使用账号密码就行了,但是程序里直接有密码是十分不安全的 这里我参考了别人的博客对这个问题进行解决 1. 需求背景 我们在开发应用时,需要连接数据库,一般把数据库 ...

  6. redismanager 获取不到yml中的密码_SpringBoot敏感信息加密,springboot配置文件密码加密jasypt...

    使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些.打开application.properties或application.yml,比如mysq ...

  7. SpringBoot配置文件敏感信息加密,springboot配置文件数据库密码加密jasypt

    使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些.打开application.properties或application.yml,比如mysq ...

  8. java连接池hkai,MySQL连接配置文件密码加密及其在多种连接池上的应用

    为了安全,连接数据库的配置文件中,如密码等信息需要采用密文的形式存放. 本文将给出多种连接池数据库密码密文存放的实现~ 如何配置数据库密码加密访问数据库? 将配置文件用户相关的信息(例如:密码)进行加 ...

  9. SpringBoot配置文件数据库密码加密

    引言 需求:springboot的配置文件中,把连接数据库的密码加密,使之不是以明文存储 步骤 导入Maven坐标 <dependency><groupId>com.githu ...

最新文章

  1. 本科计算机专业考北大软微,2022北京大学软微学院计算机智能科技考研必看经验指导(含复试解析)...
  2. centos中python2.7被覆盖,yum,python重新安装
  3. PHP mkdir()无写权限的问题解决方法
  4. 用基本控件简单地仿QQ登录界面
  5. 最近项目重构的一些感想
  6. (转)SpringMVC学习(三)——SpringMVC的配置文件
  7. android 设置PopupWindow透明度
  8. 面试官:能不能手写一个 Promise?
  9. 浅谈C++类(7)--析构函数
  10. atm机存款场景图_被ATM机吞掉的钱
  11. HTML表格和列表笔记练习!DOCTYPE html html lang=en head meta charset=UTF-8 title关于表格的一些练...
  12. 浏览器中的 HTTP 请求从发起到结束经历的所有阶段
  13. 【Android】在有menu键的手机上显示ActionBar上的Menu键
  14. 磨洋工 warm-chair attrition
  15. CCF-201809-3
  16. 函数指针实现回调函数
  17. STM32F103使用L9110s驱动直流电机(必须简单易懂)
  18. MyBatis之Base64加密数据源
  19. PXC SST 同步异常trabackup_checkpoints missing. xtrabackup/SST failed on DONOR. Check DONOR log
  20. 一则能领略到人生苦涩和忧伤的故事

热门文章

  1. linux zip压缩和unzip解压缩命令
  2. 软件著作权,专利权,商标权和商业秘密权的详细差异辨析
  3. 算法提高 现代诗如蚯蚓
  4. 《深入理解mybatis原理》 MyBatis的架构设计以及实例分析
  5. 如何用burp抓取手机的流量_手机两个卡槽,流量卡怎么选择,怎么用更合适
  6. 微信小程序---简易教程
  7. 手机玩exe游戏的模拟器_使命召唤手游模拟器和手机一起玩怎么样 拟器和手机一览_使命召唤手游...
  8. 同花顺快捷键以及使用方法
  9. 事件、故障排查处理思路,你值得试试
  10. 环氧树脂在物联网设备 PCB 制造中的多种作用