Spring Cloud Config 原理简介和实现(二)

简介: Spring Cloud Config 原理简介和实现

6、配置中心的安全认证


现在配置内容通过加解密的方式实现了安全保障,


是配置中心spring-cloud-config-server还是完全对外公开的。


如果通过http协议地址:http://config-server-ip:port/applicationName/profile/label


是可以获取到配置文件内容,这对配置信息的安全保护还是不足。


需要给spring-cloud-config-server提供用户安全认证,


在这里使用spring-boot提供的security组件来使用HTTP Bastic用户安全认证。


在spring-cloud-config-server中增加新的依赖security:

微信图片_20220414200200.png

在spring-cloud-config-server全局配置文件中增加用户信息:


微信图片_20220414200203.png


这样就为spring-cloud-config-server提供了用户安全认证。


在客户的bootstrap配置文件中增加下述内容,来实现spring-cloud-config-client访问


微信图片_20220414200206.png


7、配置中心加密


配置文件统一存储在GIT中,虽然增强了管理和版本控制,但是文件内容的安全性也成了问题。


如果外部任意知道了GIT地址或spring-cloud-config-server的地址,那么配置文件的全部内容相当于


对外完全开放。这个时候就需要提供配置内容加解密逻辑。


将加密后的配置内容保存在GIT仓库中,在spring-cloud-config-client访问


spring-cloud-config-server的时候,过spring-cloud-config-server实现加密数据的解密,


这样就可以保证配置内容的安全了。


a、对称加密


配置密钥


微信图片_20220414200209.png


查看加解密环境


微信图片_20220414200212.png

对dev-5.0.0加密


微信图片_20220414200215.png


在命令行执行


curl http://127.0.0.1:9000/encrypt -u test -d dev-5.0.0


Enter host password for user 'test':

dcd8d3714c6e8fe91660b73461352a7807b6938e48e9d17773e6f8714cad718d(base)


-d指加密数据

-u是用户名


将密文配置到git文件中去


密文前面要加上{cipher}

微信图片_20220414200218.png


访问该配置得到明文


微信图片_20220414200221.png

b、非对称加密


使用不同的密钥(key)实现配置数据的加密和解密。


使用公钥加密数据,使用私钥解密数据。


微信图片_20220414200225.png


JDK提供了java-keytool工具来生成密钥,生成的密钥信息是"keystore"文件。


keytool工具使用方式如下:


keytool -genkeypair -alias "test" -keyalg "RSA"

-keystore "test.keystore"


微信图片_20220414200228.png


生成keystore


微信图片_20220414200231.png


将生成的密钥文件test.keystore保存到spring-cloud-config-server的


classpath下(src/main/resources),并在全局配置文件中增加下述内容:


微信图片_20220414200234.png


微信图片_20220414200238.png


实现配置数据的加解密方式和对称加密一致。

相关文章
|
10月前
|
缓存 Java 开发者
【Spring】原理:Bean的作用域与生命周期
本文将围绕 Spring Bean 的作用域与生命周期展开深度剖析,系统梳理作用域的类型与应用场景、生命周期的关键阶段与扩展点,并结合实际案例揭示其底层实现原理,为开发者提供从理论到实践的完整指导。
1094 22
|
10月前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
2972 0
|
9月前
|
XML Java 测试技术
《深入理解Spring》:IoC容器核心原理与实战
Spring IoC通过控制反转与依赖注入实现对象间的解耦,由容器统一管理Bean的生命周期与依赖关系。支持XML、注解和Java配置三种方式,结合作用域、条件化配置与循环依赖处理等机制,提升应用的可维护性与可测试性,是现代Java开发的核心基石。
|
9月前
|
XML Java 应用服务中间件
【SpringBoot(一)】Spring的认知、容器功能讲解与自动装配原理的入门,带你熟悉Springboot中基本的注解使用
SpringBoot专栏开篇第一章,讲述认识SpringBoot、Bean容器功能的讲解、自动装配原理的入门,还有其他常用的Springboot注解!如果想要了解SpringBoot,那么就进来看看吧!
775 2
|
11月前
|
Java 关系型数据库 数据库
深度剖析【Spring】事务:万字详解,彻底掌握传播机制与事务原理
在Java开发中,Spring框架通过事务管理机制,帮我们轻松实现了这种“承诺”。它不仅封装了底层复杂的事务控制逻辑(比如手动开启、提交、回滚事务),还提供了灵活的配置方式,让开发者能专注于业务逻辑,而不用纠结于事务细节。
1221 1
|
12月前
|
缓存 安全 Java
Spring 框架核心原理与实践解析
本文详解 Spring 框架核心知识,包括 IOC(容器管理对象)与 DI(容器注入依赖),以及通过注解(如 @Service、@Autowired)声明 Bean 和注入依赖的方式。阐述了 Bean 的线程安全(默认单例可能有安全问题,需业务避免共享状态或设为 prototype)、作用域(@Scope 注解,常用 singleton、prototype 等)及完整生命周期(实例化、依赖注入、初始化、销毁等步骤)。 解析了循环依赖的解决机制(三级缓存)、AOP 的概念(公共逻辑抽为切面)、底层动态代理(JDK 与 Cglib 的区别)及项目应用(如日志记录)。介绍了事务的实现(基于 AOP
458 0
|
前端开发 Java 数据库连接
Spring核心原理剖析与解说
每个部分都是将一种巨大并且复杂的技术理念传达为更易于使用的接口,而这就是Spring的价值所在,它能让你专注于开发你的应用,而不必从头开始设计每一部分。
353 32
|
Java API 数据库
JPA简介:Spring Boot环境下的实践指南
上述内容仅是JPA在Spring Boot环境下使用的冰山一角,实际的实践中你会发现更深更广的应用。总而言之,只要掌握了JPA的规则,你就可以借助Spring Boot无比丰富的功能,娴熟地驾驶这台高性能的跑车,在属于你的程序世界里驰骋。
523 15
|
12月前
|
监控 架构师 NoSQL
spring 状态机 的使用 + 原理 + 源码学习 (图解+秒懂+史上最全)
spring 状态机 的使用 + 原理 + 源码学习 (图解+秒懂+史上最全)
|
Java 开发者 Spring
Spring框架 - 深度揭秘Spring框架的基础架构与工作原理
所以,当你进入这个Spring的世界,看似一片混乱,但细看之下,你会发现这里有个牢固的结构支撑,一切皆有可能。不论你要建设的是一座宏大的城堡,还是个小巧的花园,只要你的工具箱里有Spring,你就能轻松搞定。
528 9

热门文章

最新文章