springBoot配置文件设置mongodb连接密码加密
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连接密码加密相关推荐
- SpringBoot集成Druid和数据库密码加密
Druid是阿里开发的数据库连接池,通过简单的配置,可以实现数据库的连接,性能特别强大,可以在页面访问,包括监控数据库性能参数,慢SQL统计,当然还包括数据库连接等. 今天主要记录一下SpringBo ...
- 使用druid 数据池对连接密码加密
使用druid 数据池对连接密码加密 1.使用maven导入druid的jar包 <!-- https://mvnrepository.com/artifact/com.alibaba/drui ...
- SpringBoot+2次MD5登录密码加密+MyBatisPlus+Thymeleaf+Bootstrap简单实现登录功能,一文轻松搞定!
这里写目录标题 一.演示GIF 二.开发前期准备 1.数据库 2.依赖POM.XML 3.idea结构目录 三.后端 1.实体类 2.mapper接口 3.mapper.xml 4.Servicce接 ...
- springboot+druid+dynamic-datasource+mysql数据库密码加密
背景 生产环境中, 希望将数据库密码加密, 甚至用户名加密.druid自带了数据库密码加密功能. springboot+druid-starter实现密码加密 获取公钥和加密密码.这里使用druid- ...
- mysql连接密码加密_数据库连接用户名和密码加密
我们的工程项目往往是使用云数据库的,连接使用账号密码就行了,但是程序里直接有密码是十分不安全的 这里我参考了别人的博客对这个问题进行解决 1. 需求背景 我们在开发应用时,需要连接数据库,一般把数据库 ...
- redismanager 获取不到yml中的密码_SpringBoot敏感信息加密,springboot配置文件密码加密jasypt...
使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些.打开application.properties或application.yml,比如mysq ...
- SpringBoot配置文件敏感信息加密,springboot配置文件数据库密码加密jasypt
使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些.打开application.properties或application.yml,比如mysq ...
- java连接池hkai,MySQL连接配置文件密码加密及其在多种连接池上的应用
为了安全,连接数据库的配置文件中,如密码等信息需要采用密文的形式存放. 本文将给出多种连接池数据库密码密文存放的实现~ 如何配置数据库密码加密访问数据库? 将配置文件用户相关的信息(例如:密码)进行加 ...
- SpringBoot配置文件数据库密码加密
引言 需求:springboot的配置文件中,把连接数据库的密码加密,使之不是以明文存储 步骤 导入Maven坐标 <dependency><groupId>com.githu ...
最新文章
- 本科计算机专业考北大软微,2022北京大学软微学院计算机智能科技考研必看经验指导(含复试解析)...
- centos中python2.7被覆盖,yum,python重新安装
- PHP mkdir()无写权限的问题解决方法
- 用基本控件简单地仿QQ登录界面
- 最近项目重构的一些感想
- (转)SpringMVC学习(三)——SpringMVC的配置文件
- android 设置PopupWindow透明度
- 面试官:能不能手写一个 Promise?
- 浅谈C++类(7)--析构函数
- atm机存款场景图_被ATM机吞掉的钱
- HTML表格和列表笔记练习!DOCTYPE html html lang=en head meta charset=UTF-8 title关于表格的一些练...
- 浏览器中的 HTTP 请求从发起到结束经历的所有阶段
- 【Android】在有menu键的手机上显示ActionBar上的Menu键
- 磨洋工 warm-chair attrition
- CCF-201809-3
- 函数指针实现回调函数
- STM32F103使用L9110s驱动直流电机(必须简单易懂)
- MyBatis之Base64加密数据源
- PXC SST 同步异常trabackup_checkpoints missing. xtrabackup/SST failed on DONOR. Check DONOR log
- 一则能领略到人生苦涩和忧伤的故事