【微服务笔记15】微服务组件之Config配置中心实现用户认证、配置属性加解密

news2025/6/19 11:08:51

这篇文章,主要介绍微服务组件之Config配置中心实现用户认证、配置属性加解密。

目录

一、用户认证

1.1、引入security依赖

1.2、服务端ConfigServer添加访问配置

1.3、客户端ConfigClient添加访问配置

二、配置属性加解密

2.1、对称加密

(1)检车是否支持对称加密

(2)加密配置属性

(3)加密内容保存到配置中心

(4)客户端测试

2.2、非对称加密

(1)keytool生成密钥文件

(2)防止maven忽略config.keystore文件

(3)添加非对称加解密配置

(4)加密配置属性

(5)修改配置中心属性


一、用户认证

前面两篇文章主要介绍了如何搭建Config配置中心的运行环境,那种环境下,任意的用户都可以访问Config配置中心的配置文件,这在实际开发中是不允许的,容易导致安全问题,所以一般都需要进行用户认证操作,只有授予了访问权限的用户才能够访问Config配置中心。

Config配置中心实现用户认证,是依赖于Security模块,我们只需要引入spring-security依赖即可。

1.1、引入security依赖

<!-- 引入 Security 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

1.2、服务端ConfigServer添加访问配置

【application.yml】配置文件中,添加用户认证的相关配置信息,如下所示:

spring:
  # 添加用户认证配置
  security:
    user:
      name: user # 默认就是 user 用户名称
      password: root # 登录密码

1.3、客户端ConfigClient添加访问配置

ConfigServer服务端添加了Security用户认证的配置,那么客户端在访问服务端的时候,就需要带上用户名和密码,这就需要在ConfigClient客户端工程中的【bootstrap.yml】配置文件中进行设置(注意:一定要在bootstrap.yml配置文件中设置)。

spring:
  cloud:
    config:
      # 用户认证
      username: user # 访问 config server 的用户名称
      password: root # 访问 config server 的登录密码

经过上面三个步骤,就已经完成Config配置中心的用户认证功能了。

二、配置属性加解密

Config配置中心的配置属性,目前都是采用明文的形式保存在Git上面,但是针对一些隐私数据,实际开发中肯定是要进行加密存储的,这样可以避免因为配置文件泄露,导致安全问题。

配置属性加解密有两种方式,分别是:对称加密算法、非对称加密算法。

2.1、对称加密

对称加密是最简单的一种加解密算法,加密和解密时候都是采用相同的密钥,这种方式也有缺点,那就是一旦密码泄露,就会导致隐私数据泄露。

(1)检车是否支持对称加密

启动Config Server服务端工程,浏览器访问【http://localhost:9999/encrypt/status】地址,查看是否具备对称加解密的功能。

  • 如果出现下图所示情况,则说明具备加解密功能,但是现在还缺少加解密的密钥策略。

  • 如何解决上图所示的错误呢???

在Config Server服务端工程的【bootstrap.yml】配置文件中,添加密钥key配置(注意:一定要在boostrap.yml文件中添加)。

# 对称加解密的key配置
encrypt:
  key: config_encrypt_key # 这里自定义写一个加解密使用的key密钥即可
  • 配置密钥之后,重新启动ConfigServer服务端工程。

出现上面的情况,就说明Config Server服务端已经具备加解密的环境了。

(2)加密配置属性

在配置中心服务端中,提供了【http://localhost:9999/encrypt】接口地址,用于加密操作,我们可以在CMD命令行中,使用curl命令进行属性的加密,然后将加密之后的属性保存到Git上面。

 命令如下所示:

# -d 后面的内容就是需要加密的明文内容
curl http://localhost:9999/encrypt -d root

(3)加密内容保存到配置中心

进入配置中心,找到对应的配置文件,然后将加密之后的内容,填入到指定的属性后面,需要注意的是,这个内容必须是按照如下规则填写:

'{cipher}后面跟着加密的内容'

下面是我配置的内容:

(4)客户端测试

启动客户端,然后获取password属性,查看是否为解密之后的内容,如果是则对称加解密成功。

需要注意的是,Config加解密是发生在Config Server服务端的,Config Server会从Git上面获取到加密之后的属性,然后解密之后再将属性发送给Config Client客户端程序。

2.2、非对称加密

非对称加密,是指:采用一对密钥,一个是公钥、一个是私钥,客户端拿着公钥进行数据的加密,服务端拿着私钥进行密文的解密。要使用非对称加密,需要生成一个密钥配置文件,这里我们可以采用JDK自带的【keytool】工具来生成密钥配置文件。

(1)keytool生成密钥文件

在某个目录下面,打开CMD命令行窗口,执行如下命令:

# keytool 生成密钥文件的命令工具
# -genkeypair 生成密钥对
# -keystore 用于指定密钥对文件名称路径,我这里就叫做config.keystore文件
# -alias 别名,这叫做config
# -keyalg 非对称加解密算法
# -keypass 密码,这里叫做config
# -storepass 存储密码,这里叫做config
keytool -genkeypair -keystore config.keystore -alias config -keyalg RSA -keypass config -storepass config

执行命令之后,此时会让你输入一些内容,如下:

执行成功之后,此时在对应的目录下面就会生成一个【config.keystore】文件,然后将这个文件复制到Config Server服务端工程的【resources】类路径下面。

(2)防止maven忽略config.keystore文件

maven默认情况下,是不会将config.keystore文件打包到classes目录的,所以需要在pom中添加配置:

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.yml</include>
                    <include>**/*.properties</include>
                    <include>**/*.keystore</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

(3)添加非对称加解密配置

在Config Server服务端工程中的【bootstrap.yml】文件里面,添加如下配置信息:

# 非对称加密的配置
encrypt:
  key-store:
    location: classpath:config.keystore # 密钥对文件的路径
    alias: config # 密码对别名,和生成密钥对时候那个alias保持一致
    password: config # 对应 storepass 的值
    secret: config # 对应 keypass 的值,私钥

(4)加密配置属性

打开CMD命令行窗口,执行命令,生成密文。

命令如下所示:

curl http://localhost:9999/encrypt -d root_2023

(5)修改配置中心属性

修改配置中心的password属性值,将其替换成非对称加密之后的密文内容。

启动客户端工程,访问测试是否能够正常获取加密之后的属性。

到此,Config配置中心实现用户认证、配置属性加解密就完成啦。

综上,这篇文章结束了,主要介绍微服务组件之Config配置中心实现用户认证、配置属性加解密。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/411649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

逍遥自在学C语言 | 位运算符^的高级用法

前言 在上一篇文章中&#xff0c;我们介绍了|运算符的高级用法&#xff0c;本篇文章&#xff0c;我们将介绍^ 运算符的一些高级用法。 一、人物简介 第一位闪亮登场&#xff0c;有请今后会一直教我们C语言的老师 —— 自在。 第二位上场的是和我们一起学习的小白程序猿 —— …

windows系统管理_文件系统授权规则

NTFS 权限规则 NFTS 权限有一些隐含规则&#xff0c;用户最终有效权限受这些规则的影响&#xff0c;了解并运用这些规则&#xff0c;才能 灵活的分配权限&#xff0c;符合实际需求。 1 权限的累加 如果在某个文件或文件夹的访问控制列表中为某个用户分配了操作权限&#xff…

猿辅导学员入选国家队,竞赛老师成为“最强辅助”

3月31日&#xff0c;国际数学奥林匹克竞赛&#xff08;IMO&#xff09;国家队名单正式出炉&#xff0c;猿辅导学员王淳稷、孙启傲分别以第一名和第二名的成绩位列其中&#xff0c;今年7月&#xff0c;他们将出征日本&#xff0c;代表中国参赛&#xff0c;为国争光。 自2020年以…

理解 与 计算 物联网产品的电池使用寿命

本文带你理解电池的容量以及教会你如何计算使用电池的产品的工作时长前言 在物联网领域&#xff0c;在保证产品性能的前提下&#xff0c;产品的功耗是做得越来越低&#xff0c;针对物联网领域的低功耗无线芯片的功耗也是越来越低。 作为研发人员&#xff0c;除了能够设计出满…

巧用千寻位置GNSS软件|点测量采集技巧

点测量是测量中重要的节点&#xff0c;在测量工作的信息处理分析中发挥着重要作用。本期将给各位带来使用千寻位置GNSS软件采集地形点、控制点、快速点、连续点、房角点和倾斜点的操作技巧。地形点地形点的设置如图 5.1-9所 示&#xff0c;每次采集一个点&#xff0c;该点需要满…

Docker通过Nginx容器代理部署Vue项目

一、打包构建dist 在vue.config.js 添加入口等配置&#xff1a; pages: {index: {// 入口entry: src/main.js}}, lintOnSave: false, publicPath: ./ 在package.json文件中编写build构建&#xff1a; 然后运行: npm run build 在项目根目录下就有构建好的dist包&#xff0…

物流路由线路配载前端算法逻辑实现方案

作者&#xff1a;京东物流 柳宏 1.前置知识 1.1 基本概念 1.1.1 配载 配载代表着某条线路是否具有发往某个方向&#xff08;区域、省市县、分拣等&#xff09;的能力&#xff0c;也可以说是网点&#xff08;分拣中心&#xff09;是否具有承载配载所指方向货物的能力。一般网…

Go 构建基础的事件调度器

&#x1f447;我在这儿 当我们需要在一段时间后的特定时间或间隔运行任务时&#xff0c;我们需要使用任务调度系统来运行任务&#xff1a;例如发送电子邮件、推送通知、午夜关闭账户、清空表格等。在本文中&#xff0c;我们将构建一个基本的事件调度程序&#xff0c;使用数据库…

基于springboot和ajax的简单项目 02.一直会出现的页面的上一页,下一页,分页与总页数 (下)

在各种功能中会一直出现页面分页的问题。 对此&#xff0c;可以使用pojo对象&#xff0c;来一直管理页面分页的功能。 01.创建相关的pojo对象。 由于属性是来辅助sql语句的&#xff0c;这个pojo对象。 Setter Getter ToString NoArgsConstructorpublic class PageObject<T&…

MySQL数据库实现主从同步

安装MySQL数据库8.0.32 前言 今天来学习数据库主从同步的原理及过程&#xff0c;数据库主要是用来存储WEB数据&#xff0c;在企业当中是极为重要的&#xff0c;下面一起来看下。 1.1 数据库做主从的目的 MySQL主从复制在中小企业&#xff0c;大型企业中广泛使用&#xff0c…

【ROS2指南-2】入门 turtlesim 和 rqt

目标&#xff1a;安装并使用 turtlesim 包和 rqt 工具为即将到来的教程做准备。 教程级别&#xff1a;初学者 时间&#xff1a; 15分钟 内容 背景 先决条件 任务 1 安装turtlesim 2 启动turtlesim 3 使用turtlesim 4 安装rqt 5 使用 rqt 6 重新映射 7 关闭turtlesim …

算法 || DFS(深度优先搜索) BFS(广度优先搜索)

&#xff11;、基本概念 dfs全称为Depth First Search,即深度优先搜索。它的思想是沿着每一条可能的路径一个节点一个节点地往下搜索,搜到了路径的到终点再回溯,一直到所有路径搜索完为止。 bfsbfs全称为Breath First Search,即广度(宽度)优先搜索。它的思想是将每一层的结搜…

【SQL】数据库的创建,表的创建、更新、删除

本文内容参考书籍《SQL基础教程》&#xff0c;初学者&#xff0c;请多指教。 一、数据库的创建 1、创建数据库语句 CREATE DATABASE <数据库名称>; 2、示例 CREATE DATABAST shop&#xff1b; 二、表的创建 创建表之前&#xff0c;必须先创建用于存储表的数据库。 1、…

如何找出消耗CPU最多的线程?

如何找出消耗CPU最多的线程&#xff1f; 1.使用 top -c 找出所有当前进程的运行列表 top -c 2.按P(Shiftp)对所有进程按CPU使用率进行排序&#xff0c;找出消耗最高的线程PID ​​​ 显示Java进程 PID 为 136 的java进程消耗最 3.使用 top -Hp PID&#xff0c;查出里面消…

JavaEE简单示例——基于XML配置文件的SSM整合

SSM整合 在本节中&#xff0c;我们会将之前我们学习过的三个框架结合起来&#xff0c;让他们可以融合起来&#xff0c;搭建成一个完整的贯穿整个三层架构的整体框架。 三层框架与对应的框架功能 我们首先回顾一下我们编写软件的三层框架以及对应使用的框架都分别是什么&…

代码随想录算法训练营第五十九天| 503. 下一个更大元素 II、42. 接雨水。

503. 下一个更大元素 II 题目链接&#xff1a;力扣 题目要求&#xff1a; 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。数字 x 的 下一个更大的元素 是按数组遍历顺…

( “树” 之 DFS) 110. 平衡二叉树 ——【Leetcode每日一题】

110. 平衡二叉树 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] …

智慧钢铁厂人员定位系统解决方案,助力钢铁企业提升安全生产管理水平

作为国民经济的基础原材料产业&#xff0c;钢铁工业在经济发展中具有重要地位。中国钢铁工业不仅为我国国民经济的快速发展做出了重大贡献&#xff0c;也为世界经济的繁荣和世界钢铁工业的发展起到了积极的促进作用&#xff0c;但钢铁行业在快速发展的同时也存在一些安全管理问…

React应用(基于React脚手架)

目录前言&#xff1a;一、使用create-react-app创建react应用1、什么是 react 脚手架&#xff1f;2. 创建 cli 脚手架方式13. 创建 cli 脚手架方式24. npx:5. react脚手架项目结构6. 功能界面的组件化编码流程&#xff08;通用&#xff09;7. 如何更改脚手架版本二、React 组件…

【SpringMVC】7—文件上传

⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个star~&#x1f60a; 如果文章对你有所帮助&#xff0c;可以点赞&#x1f44d;…