java B2B2C电子商务平台分析之七-Spring Cloud Config

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

在我们了解spring cloud config之前,我可以想想一个配置中心提供的核心功能应该有什么,愿意了解源码的朋友直接求求交流分享技术:二一四七七七五六三三

 提供服务端和客户端支持

 集中管理各环境的配置文件

 配置文件修改之后,可以快速的生效

 可以进行版本管理

 支持大的并发查询

 支持各种语言

Spring Cloud Config可以完美的支持以上所有的需求。

 要使用加密和解密功能,您需要在JVM中安装全面的JCE(默认情况下不存在)。您可以从Oracle下载“Java加密扩展(JCE)无限强度管理策略文件”,并按照安装说明(实际上将JRE lib / security目录中的2个策略文件替换为您下载的文件)。

如果远程属性源包含加密内容(以{cipher}开头的值),则在通过HTTP发送到客户端之前,它们将被解密。这种设置的主要优点是,当它们“静止”时,属性值不必是纯文本(例如在git仓库中)。如果值无法解密,则从属性源中删除该值,并添加具有相同键的附加属性,但以“无效”作为前缀。和“不适用”的值(通常为“”)。这主要是为了防止密码被用作密码并意外泄漏。

如果要为config客户端应用程序设置远程配置存储库,可能会包含一个application.yml,例如:application.yml

spring:
  datasource:
    username: dbuser
    password: '{cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ'

.properties文件中的加密值不能用引号括起来,否则不会解密该值:application.properties

spring.datasource.username: dbuser
spring.datasource.password: {cipher}FKSAJDFGYOS8F7GLHAKERGFHLSAJ

您可以安全地将此纯文本推送到共享git存储库,并且保密密码。

服务器还暴露了/encrypt和/decrypt端点(假设这些端点将被保护,并且只能由授权代理访问)。如果您正在编辑远程配置文件,可以使用Config Server通过POST到/encrypt端点来加密值,例如

$ curl localhost:8888/encrypt -d mysecret
682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda

逆向操作也可通过/decrypt获得(如果服务器配置了对称密钥或全密钥对):

注意 如果要加密的值具有需要进行URL编码的字符,则应使用--data-urlencode选项curl来确保它们已正确编码。

$ curl localhost:8888/decrypt -d 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
mysecret

 如果您使用curl进行测试,则使用--data-urlencode(而不是-d)或设置显式Content-Type: text/plain,以确保在有特殊字符时正确地对数据进行编码('+'特别是棘手)。

将加密的值添加到{cipher}前缀,然后再将其放入YAML或属性文件中,然后再提交并将其推送到远程可能不安全的存储区。

/encrypt和/decrypt端点也都接受/*/{name}/{profiles}形式的路径,当客户端调用到主环境资源时,可以用于每个应用程序(名称)和配置文件控制密码。

注意 为了以这种细微的方式控制密码,您还必须提供一种TextEncryptorLocator类型的@Bean,可以为每个名称和配置文件创建不同的加密器。默认提供的不会这样做(所有加密使用相同的密钥)。

spring命令行客户端(安装了Spring Cloud CLI扩展)也可以用于加密和解密,例如

$ spring encrypt mysecret --key foo
682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
$ spring decrypt --key foo 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda
mysecret

要在文件中使用密钥(例如用于加密的RSA公钥),使用“@”键入键值,并提供文件路径,例如

$ spring encrypt mysecret --key @${HOME}/.ssh/id_rsa.pub
AQAjPgt3eFZQXwt8tsHAVv/QHiY5sI2dRcR+...

关键参数是强制性的(尽管有一个--前缀)。

整体代码结构如下: 资料和源码来源

_

目录
相关文章
|
安全 Java 应用服务中间件
Java 近期新闻:Hibernate 6.0、JobRunr 5.0、JHipster 7.8.0、Spring CVEs、JReleaser 1.0-RC2
本期 Java 近期新闻综述内容涉及 JDK 19、Spring Boot、Spring CVEs、Apache Tomcat 点版本、Quarkus Tools for Visual Studio Code、Micronaut 3.4.1、JetBrains 加入 Micronaut 基金会、Open Liberty Paketo Liberty Buildpack、Hibernate 6.0、JobRunr 5.0、WildFly 26.1 Beta S2I 镜像、JReleaser 1.0-RC2、MicroStream 7.0-M2、JHipster 7.8.0、JMH 1.35。
887 0
|
7月前
|
Java 关系型数据库 MySQL
【Java Spring开源项目】新蜂(NeeBee)商城项目运行、分析、总结
【Java Spring开源项目】新蜂(NeeBee)商城项目运行、分析、总结
447 4
|
7月前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
104 1
|
负载均衡 Java API
【java_wxid项目】【第四章】【Spring Cloud Ribbon集成】
【java_wxid项目】【第四章】【Spring Cloud Ribbon集成】
120 0
|
SQL Java API
【java_wxid项目】【第六章】【Spring Cloud Gateway集成】
主项目链接:https://gitee.com/java_wxid/java_wxid 项目架构及博文总结:
|
SQL 存储 Java
【java_wxid项目】【第十五章】【Spring Cloud Skywalking集成】
点击:【使用Spring Boot快速构建应用】 点击:【使用Spring Cloud Open Feign基于动态代理动态构造请求实现与其他系统进行交互】 点击:【使用Spring Cloud Hystrix实现服务容错、熔断、降级、监控】 点击:【使用Spring Cloud Ribbon以库的方式集成到服务的消费方实现客户端负载均衡】
374 0
|
SQL Java API
【java_wxid项目】【第五章】【Spring Cloud Hystrix集成】
主项目链接:https://gitee.com/java_wxid/java_wxid 项目架构及博文总结:
222 0
|
SQL 存储 Java
【java_wxid项目】【第十四章】【Spring Cloud Stream集成】
【java_wxid项目】【第十四章】【Spring Cloud Stream集成】
159 0
|
Java Spring 容器
java B2B2C Springcloud电子商城系统-Spring Cloud常见问题与总结(四)
一.Spring Cloud定位问题思路总结 Spring Cloud进入Camden时代后,已经比较稳定。一般来说,问题都不是Spring Cloud本身的Bug导致。建议按照如下步骤进行定位。 1.排查配置问题 首先排查配置问题,举几个简单的例子 YALM缩进是否正确 如果YALM配置文件缩进不正确,Spring Cloud应用程序无法正常启动,或配置无法正常加载。
790 0
|
监控 Java 微服务
java B2B2C源码电子商城系统-Spring Cloud常见问题与总结(二)
在使用Spring Cloud的过程中,难免会遇到一些问题。所以对Spring Cloud的常用问题做一些总结。 一、整合Hystrix后首次请求失败 1.1 原因分析 Hystrix 默认的超时时间是1秒,如果在1秒内得不到响应,就会进入 fallback 逻辑。
766 0