资讯专栏INFORMATION COLUMN

基于SpringCloud的Microservices架构实战案例-配置文件属性内容加解密

dantezhao / 2418人阅读

摘要:基于的架构实战案例配置文件属性内容加解密使用过配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些。,官方给出的释意是项目也采用此加密组件,结合使用。

基于SpringCloud的Microservices架构实战案例-配置文件属性内容加解密

使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些。打开application.properties或application.yml,比如mysql登陆密码,redis登陆密码以及第三方的密钥等等一览无余,这里介绍一个加解密组件,提高一些属性配置的安全性。

jasypt[http://www.jasypt.org/],官方给出的释意是:

Jasypt is a java library which allows the developer to add basic encryption capabilities to his/her projects with minimum effort, and without the need of having deep knowledge on how cryptography works.

simplemall项目也采用此加密组件,结合spring boot使用。国外大神Ulises Bocchio写了一个spring boot下用的工具包,Github地址:https://github.com/ulisesbocc...,下面介绍下jasypt在spring boot的用法。

1、引入maven依赖



    com.github.ulisesbocchio
    jasypt-spring-boot-starter
    1.14

2、配置加密参数

在application.yml 中增加配置

jasypt:
  encryptor:
    #这里可以理解成是加解密的时候使用的密钥
    password: your password

在application.properties中增加配置

jasypt.encryptor.password=your password

此处密码的生成可以通过两种方式生成,写main函数生成和直接采用jar命令方式。本处采用main函数的方式,此代码位于account-serv的test包中。

package com.simplemall.account.test;
    
import org.jasypt.encryption.StringEncryptor;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;

import com.simplemall.account.AccountServApplication;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@SpringBootTest(classes = AccountServApplication.class)
public class Jasyptest {
    
    @Autowired
    StringEncryptor encryptor;
    
    @Test
    public void getPass() {
        String result = encryptor.encrypt("root");
        System.out.println(result); 
        Assert.assertTrue(result.length() > 0);
    }
}

3、升级application.properties/yml中相应的配置项

旧有配置

#mysql database config
spring.datasource.url=jdbc:mysql://localhost:3306/micro_account?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull
#use jasypt to encrypt username/password
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName=com.mysql.jdbc.Driver

升级后配置

#mysql database config
spring.datasource.url=jdbc:mysql://localhost:3306/micro_account?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull
#use jasypt to encrypt username/password
spring.datasource.username=ENC(BnBr3/idF0PH9nd20A9BXw==)
spring.datasource.password=ENC(BnBr3/idF0PH9nd20A9BXw==)
spring.datasource.driverClassName=com.mysql.jdbc.Driver

至此,配置完成,效果就如你在simplemall源码中看到的那样,针对配置文件中相关属性做了一次安全升级。

源码:https://github.com/backkoms/s...

扩展阅读:

基于SpringCloud的Microservices架构实战案例-序篇

基于SpringCloud的Microservices架构实战案例-架构拆解

Spring Boot + Elasticsearch 实现索引的日常维护

微服务体系下如何快速构建一个服务

介绍几款常用的在线API管理工具

如何从传统软件开发顺利过渡到互联网技术开发

学习新技术时你应当掌握的『最少必要知识』

做了七年软件开发后反而更迷茫

软技能:代码之外的生存指南

程序员,保护你的好奇心和求知欲

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69018.html

相关文章

  • 基于SpringCloudMicroservices架构实战案例-架构拆解

    摘要:服务拆分具体拆分到多细,业内没有一个统一的标准。全部模块基于,采用进行项目管理。比较常见的做法时,每个子服务模块中独立一个模块,存放实体及对外的接口。 自第一篇《基于SpringCloud的Microservices架构实战案例-序篇》发表出来后,差不多有半年时间了,一直也没有接着拆分完,有如读本书一样,也是需要契机的,还是要把未完成的工作做完,虽然并不是什么经典应用,还是有必要将si...

    gghyoo 评论0 收藏0
  • 从小白程序员一路晋升为大厂高级技术专家我看过哪些书籍?(建议收藏)

    摘要:大家好,我是冰河有句话叫做投资啥都不如投资自己的回报率高。马上就十一国庆假期了,给小伙伴们分享下,从小白程序员到大厂高级技术专家我看过哪些技术类书籍。 大家好,我是...

    sf_wangchong 评论0 收藏0
  • SpringCloud(第 031 篇)配置客户端ConfigClient链接经过对称解密配置

    摘要:添加应用启动类配置客户端链接经过对称加解密的配置微服务专门为测试经过对称加解密的配置微服务微服务模块。 SpringCloud(第 031 篇)配置客户端ConfigClient链接经过对称加解密的配置微服务 - 一、大致介绍 1、Git服务端的文件内容进行了加密处理,那么是不是配置客户端拿到内容之后需要解密呢? 2、答案显然不是的,因为这样解密的话,先不说实现起来的难易程度,单从表面...

    DDreach 评论0 收藏0
  • SpringCloud构建微服务架构:服务注册与发现

    摘要:创建服务注册中心创建一个基础的工程,命名为,并在中引入需要的依赖内容通过注解启动一个服务注册中心提供给其他应用进行对话。 1.Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方...

    lakeside 评论0 收藏0
  • SpringCloud(第 033 篇)配置客户端ConfigClient链接经过对称解密配置

    SpringCloud(第 033 篇)配置客户端ConfigClient链接经过对称加解密的配置微服务 - 一、大致介绍 1、在(第 031 篇)讲解了如何链接对称加密的配置服务端,而链接对称非对称加密的配置微服务也是同样的; 2、配置客户端不需要做什么加解密的配置,加解密的配置在服务端做就好了; 3、这里还顺便列举下配置路径的规则: /****************************...

    ARGUS 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<